jtable 셀의 텍스트를 강조 표시하려고합니다. 내 코드 : testingHighlighter 메서드에서 지정된 셀의 편집기를 가져올 때 해당 편집기 구성 요소의 텍스트를 강조 표시하려고 할 때. 내가 잘못한 곳에서 나를 도와주세요. 다음에있는 당신의 문제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 field = (JTextField) table.getColumnModel(). getColumn (3) .getCellRenderer(). getTableCellRendererComponent (table, value, true, true, 0, 3); 그 후 JTextField 형광펜을 사용하여 셀 텍스트를 강조 표시합니다. 나는 이것을 시도했지만 성공할 수 없었다. – Akki
나는 내 생각을 왜 사용할 수 없는가? – alex2410
제 경우에는 렌더러가 이미 테이블 열에 정의되어 있고이 테이블에 대한 검색을 구현하고 싶습니다. 내 요구 사항은 특정 셀에서 검색된 텍스트를 강조 표시하는 것입니다. 어떻게하면이 문제를 해결할 수 있을까요? – Akki