這是我的渲染後的JTable細胞setDefaultRenderer到JTextArea中如何突出所選行中的JTextArea
class tblCalendarRenderer extends JTextArea implements TableCellRenderer {
JTextArea textField;
public tblCalendarRenderer() {
textField = new JTextArea();
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean selected, boolean focused, int row,
int column) {
textField.setText(value == null ? "" : value.toString());
textField.setLineWrap(true);
textField.setWrapStyleWord(true);
if (column == 0 || column == 6) { // Week-end
textField.setBackground(new Color(255, 220, 220));
} else { // Week
textField.setBackground(new Color(255, 255, 255));
}
if (row % 2 == 0) {
if (value != null) {
if (Integer.parseInt(value.toString()) == realDay
&& currentMonth == realMonth
&& currentYear == realYear) { // Today
textField.setBackground(new Color(220, 220, 255));
}
}
textField.setFont(new java.awt.Font("Dialog",
java.awt.Font.BOLD, 11));
} else {
textField.setFont(new java.awt.Font("Dialog",
java.awt.Font.BOLD, 12));
}
if (selected && row % 2 != 0) {
textField.setBackground(Color.LIGHT_GRAY);
textField.setForeground(Color.black);
}
textField.setBorder(null);
return textField;
}
}
這是我嘗試了以突出JTextArea中該行的代碼。我如何將它添加到jTable中?我試着添加textField.addCaretListener(新的ExampleCaretListener());但它仍然會選擇整個jTable單元。
class ExampleCaretListener implements CaretListener {
public void caretUpdate(CaretEvent e) {
Color HILIT_COLOR = Color.LIGHT_GRAY;
final Highlighter.HighlightPainter painter;
painter = new DefaultHighlighter.DefaultHighlightPainter(
HILIT_COLOR);
JTextArea textField = (JTextArea) e.getSource();
String lineText = "";
try {
int dot = e.getDot();
int rowStart = Utilities.getRowStart(textField, dot);
int rowEnd = Utilities.getRowEnd(textField, dot);
System.out.println(dot + " " + rowStart + " " + rowEnd);
lineText = textField.getText(rowStart, (rowEnd - rowStart));
textField.getHighlighter().removeAllHighlights();
textField.getHighlighter().addHighlight(rowStart, rowEnd,
painter);
} catch (BadLocationException ex) {
System.out.println(ex);
}
}
}
每個表格單元的考慮,所以如果一個日期incude多個事件,我希望用戶能夠以編輯選擇的每個事件一個日期。 – user236501 2010-07-04 03:07:05
嗨,我試着用你的代碼,但我得到了這個錯誤,java.lang.Integer不能轉換爲ui.EventFrame $ MyModel $ CellValue。 – user236501 2010-07-04 12:17:53
您應該在將其轉換爲CellValue之前檢查值的實例。你在渲染器中有這樣一行:「if(Integer.parseInt(value.toString())== realDay」。請刪除它以測試代碼,並且在所有工作中你應該知道如何使用它來解決你的問題問題。 (請不要忘記這行:最終的JTable表=新的JTable(new MyModel());) – draganstankovic 2010-07-05 06:07:03