-1
我想突出顯示jtable單元格的文本。 這是我的代碼: 當我在testsHighlighter方法中獲取指定單元格的編輯器並試圖突出顯示該編輯器組件中的文本時。請幫助我,我錯了。突出顯示jtable單元格的文本
public class test extends JFrame
{
DefaultTableModel model;
JTable table;
String col[] = {"Name","Address","Phone","test"};
public static void main(String args[])
{
test t = new test();
t.start();
t.testingHightligher();
}
public void start()
{
model = new DefaultTableModel(col,2);
table=new JTable(model){@Override
public boolean isCellEditable(int arg0, int arg1) {
return true;
}};
JScrollPane pane = new JScrollPane(table);
setColumnEditor(table.getColumnModel().getColumn(0), new Object[] { "AND",
"OR" }, "Logical Operator");
Object[] objs = new Object[] { "==", "=" };
setColumnEditor(table.getColumnModel().getColumn(2), objs, "Logical Operator");
JTextField field = new JTextField();
DefaultCellEditor editor = new DefaultCellEditor(field);
editor.setClickCountToStart(1);
TableColumn col = table.getColumnModel().getColumn(3);
col.setCellEditor(editor);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("click to edit");
col.setCellRenderer(renderer);
table.getColumnModel().getColumn(0).setPreferredWidth(25);
table.getColumnModel().getColumn(1).setPreferredWidth(120);
table.getColumnModel().getColumn(2).setPreferredWidth(25);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
table.getTableHeader().setReorderingAllowed(false);
table.setValueAt("csanuragjain",0,3);
add(pane);
setVisible(true);
setSize(500,400);
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void setColumnEditor(TableColumn col, Object[] editValues, String renderTip)
{
JComboBox comboBox = null;
if(editValues != null)
{
comboBox = new JComboBox(editValues);
}
else
{
comboBox = new JComboBox();
}
comboBox.setMaximumRowCount(6);
DefaultCellEditor editor = new DefaultCellEditor(comboBox);
editor.setClickCountToStart(2);
col.setCellEditor(editor);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText(renderTip);
col.setCellRenderer(renderer);
TableCellRenderer headerRenderer = col.getHeaderRenderer();
if(headerRenderer instanceof DefaultTableCellRenderer)
{
((DefaultTableCellRenderer) headerRenderer).setToolTipText("test");
}
}
void testingHightligher()
{
Object value = table.getValueAt(0, 3);
JTextField field = (JTextField) table.getColumnModel().getColumn(3).getCellEditor().getTableCellEditorComponent(table, value, true, 0, 3);
try
{
field.getHighlighter().addHighlight(0, 3, new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.RED));
}
catch(BadLocationException ex)
{
ex.printStackTrace();
}
}
}
Please help me where i am wrong..
可以在獲取它後更改tableCellRendererComponent的格式。如果我做JTextField字段=(JTextField)table.getColumnModel()。getColumn(3).getCellRenderer()。getTableCellRendererComponent(table,value,true,true,0,3); 之後,我用JTextField熒光筆突出顯示單元格文本。我試過這個,但不能成功..會是可能的嗎? – Akki
我想不,爲什麼你不能使用我的例子? – alex2410
在我的情況renderer已經定義了表列,我想實現這個表的搜索。我的要求是突出搜索特定單元格中的文本。我如何實現這種行爲? – Akki