我是Java初学者。 我使用JTable创建了一个应用程序,该应用程序填充了数据库。 在我的数据库中,我有一些'新闻'。在我的JTable中,我显示“新闻”的标题,当用户点击一行时,它会显示一个包含新闻正确内容的弹出窗口。 但是我希望将用户点击它时“读取”的单元格着色。
我使用自己的TableModel。
我希望我很清楚......
如果我需要提供一些代码,请告诉我请问...
答案 0 :(得分:0)
找到了如何在mouseClick上获取表格单元格的示例:http://codeprogress.com/java/showSamples.php?index=52&key=JTableValueofSelectedCell
您可以使用它来获取所选的行和列。
然后,您需要创建一个自定义TableCellRenderer,可能作为内部类,以便它可以使用选定的行和列数据,并将单元格的背景设置为突出显示的颜色
答案 1 :(得分:0)
public class JTableTest extends JFrame {
private JTable table;
private int col;
private int rowz;
/**
* Create the frame.
*/
public JTableTest() {
initComponents();
}
private void initComponents() {
/** any other components */
table = new JTable();//create the table
table.setDefaultRenderer(Object.class, new CustomModel());
table.addMouseListener(new CustomListener());
}
public class CustomListener extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent arg0) {
super.mouseClicked(arg0);
//get the clicked cell's row and column
rowz = table.getSelectedRow();
col = table.getSelectedColumn();
// Repaints JTable
table.repaint();
}
}
public class CustomModel extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Color c = Color.WHITE;//define the color you want
if (isSelected && row == rowz & column == col)
c = Color.GREEN;
label.setBackground(c);
return label;
}
}
}