在Java Swing中设置JTable单元格的两种背景色有以下两种方法:
方法一:使用DefaultTableCellRenderer类
示例代码如下:
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
public class MyTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// 设置奇数行的背景色为灰色
if (row % 2 == 1) {
component.setBackground(Color.LIGHT_GRAY);
} else {
component.setBackground(Color.WHITE);
}
return component;
}
}
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
JTable table = new JTable(10, 5);
// 应用自定义渲染器类到第一列
table.setDefaultRenderer(Object.class, new MyTableCellRenderer());
frame.add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
}
方法二:使用TableCellRenderer接口
示例代码如下:
import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
public class MyTableCellRenderer implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component component = new DefaultTableCellRenderer().getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// 设置奇数行的背景色为灰色
if (row % 2 == 1) {
component.setBackground(Color.LIGHT_GRAY);
} else {
component.setBackground(Color.WHITE);
}
return component;
}
}
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
JTable table = new JTable(10, 5);
// 应用自定义渲染器类到第一列
table.getColumnModel().getColumn(0).setCellRenderer(new MyTableCellRenderer());
frame.add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
}
以上两种方法都可以实现在Java Swing中设置JTable单元格的两种背景色。其中,方法一使用了DefaultTableCellRenderer类,方法二使用了TableCellRenderer接口。根据实际需求选择合适的方法进行使用。
参考链接:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云