テキストの各行をキーと値に分離し、複数テキストファイルを読み込み、キーを突き合わせ照合し、その結果を表示するGUIユーテリティです。
リビジョン | eac76798be9aa6d0656bfc5015b4d34f5b68a82f (tree) |
---|---|
日時 | 2011-10-23 03:27:52 |
作者 | seraphy <seraphy@192....> |
コミッター | seraphy |
・データがないセルの偶数・奇数行での背景色分け
@@ -134,6 +134,19 @@ public class KeyMatchedRowView extends AbstractTableModel { | ||
134 | 134 | RowNumMap rowNumMap = rowNumMaps.get(rowIndex); |
135 | 135 | return rowNumMap.getRowGroupSerialNo(); |
136 | 136 | } |
137 | + | |
138 | + /** | |
139 | + * 指定した行が、キーごとの先頭行以外を指しているか? | |
140 | + * @param rowIndex 行 | |
141 | + * @return キーごとの行グループの先頭行以外の場合はtrue | |
142 | + */ | |
143 | + public boolean isTrailRow(int rowIndex) { | |
144 | + if (rowIndex < 0 || rowIndex >= rowNumMaps.size()) { | |
145 | + return false; | |
146 | + } | |
147 | + RowNumMap rowNumMap = rowNumMaps.get(rowIndex); | |
148 | + return rowNumMap.getRowNumber() != 0; | |
149 | + } | |
137 | 150 | |
138 | 151 | /** |
139 | 152 | * 第一列をキー、それ以降をデータ列として1つのテーブルのカラムとしてアクセスする.<br> |
@@ -63,10 +63,15 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
63 | 63 | private Color evenColor = new Color(240, 240, 255); |
64 | 64 | |
65 | 65 | /** |
66 | - * データがnullである場合の背景色 | |
66 | + * データがnullで、奇数行の場合の背景色 | |
67 | 67 | */ |
68 | 68 | private Color nullValueColor = new Color(220, 220, 220); |
69 | 69 | |
70 | + /** | |
71 | + * データがnullで、偶数行の場合の背景色.<br> | |
72 | + */ | |
73 | + private Color evenNullValueColor = new Color(210, 210, 240); | |
74 | + | |
70 | 75 | |
71 | 76 | public TextKeyMatcherView(SingleFrameApplication app) { |
72 | 77 | super(app); |
@@ -175,18 +180,29 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
175 | 180 | super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); |
176 | 181 | |
177 | 182 | if (isSelected) { |
183 | + // フォーカスあり | |
178 | 184 | setForeground(table.getSelectionForeground()); |
179 | 185 | setBackground(table.getSelectionBackground()); |
180 | 186 | |
181 | 187 | } else { |
182 | - setForeground(table.getForeground()); | |
188 | + int colIndex = dataViewTable.convertColumnIndexToModel(column); | |
189 | + if (colIndex == 0 && dataViewTableModel.isTrailRow(row)) { | |
190 | + // キーカラムの連続キー行の場合、二つ目以降を灰色文字で表示する. | |
191 | + setForeground(Color.lightGray); | |
183 | 192 | |
193 | + } else { | |
194 | + // それ意外は通常文字色 | |
195 | + setForeground(table.getForeground()); | |
196 | + } | |
197 | + | |
198 | + // 有効なデータがある場合はキーごとに背景色を分ける | |
199 | + int serialNo = dataViewTableModel.getRowGroupSerialNo(row); | |
200 | + boolean even = (serialNo % 2 == 0); | |
184 | 201 | if (value == null) { |
185 | - setBackground(getNullValueColor()); | |
202 | + // データがnullである場合の背景色 | |
203 | + setBackground(even ? getEvenNullValueColor() : getNullValueColor()); | |
186 | 204 | |
187 | 205 | } else { |
188 | - int serialNo = dataViewTableModel.getRowGroupSerialNo(row); | |
189 | - boolean even = (serialNo % 2 == 0); | |
190 | 206 | setBackground(even ? getEvenColor() : table.getBackground()); |
191 | 207 | } |
192 | 208 | } |
@@ -219,6 +235,27 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
219 | 235 | public Color getEvenColor() { |
220 | 236 | return this.evenColor; |
221 | 237 | } |
238 | + | |
239 | + /** | |
240 | + * データがnullで、偶数行の場合の背景色を設定する. | |
241 | + * @param evenNullValueColor 背景色 | |
242 | + */ | |
243 | + public void setEvenNullValueColor(Color evenNullValueColor) { | |
244 | + if (evenNullValueColor == null) { | |
245 | + throw new IllegalArgumentException(); | |
246 | + } | |
247 | + Color oldValue = this.evenNullValueColor; | |
248 | + this.evenNullValueColor = evenNullValueColor; | |
249 | + firePropertyChange("evenNullValueColor", oldValue, evenNullValueColor); | |
250 | + } | |
251 | + | |
252 | + /** | |
253 | + * データがnullで、偶数行の場合の背景色を設定する. | |
254 | + * @return 背景色 | |
255 | + */ | |
256 | + public Color getEvenNullValueColor() { | |
257 | + return this.evenNullValueColor; | |
258 | + } | |
222 | 259 | |
223 | 260 | /** |
224 | 261 | * データがnullである場合の背景色を設定する. |