Java 隔行变色实现方法与遍历技巧

背景介绍
在Java中,实现表格或列表的隔行变色是一种常见的界面美化技巧,通过隔行变色,可以使表格或列表更加清晰易读,提升用户体验,本文将详细介绍如何在Java中实现隔行变色,并探讨相关的遍历技巧。
实现隔行变色
使用JTable组件
在Swing框架中,JTable组件是用于显示表格数据的常用组件,要实现隔行变色,可以通过以下步骤进行:
(1)创建JTable对象,并设置数据模型。
(2)为JTable添加隔行变色监听器。
(3)设置表格的默认单元格渲染器。

下面是具体的实现代码:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
public class TableColorExample {
public static void main(String[] args) {
// 创建数据模型
DefaultTableModel model = new DefaultTableModel(new Object[]{"列1", "列2", "列3"}, 0);
for (int i = 0; i < 10; i++) {
model.addRow(new Object[]{i, "数据" + i, "数据" + i});
}
// 创建表格
JTable table = new JTable(model);
// 设置隔行变色监听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
if (row % 2 == 0) {
table.setSelectionBackground(Color.LIGHT_GRAY);
} else {
table.setSelectionBackground(Color.WHITE);
}
}
});
// 设置默认单元格渲染器
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setOpaque(true);
table.setDefaultRenderer(Object.class, renderer);
// 创建面板并添加表格
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JScrollPane(table), BorderLayout.CENTER);
// 创建窗口并显示
JFrame frame = new JFrame("隔行变色示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
使用JList组件
在Swing框架中,JList组件是用于显示列表数据的常用组件,要实现隔行变色,可以通过以下步骤进行:
(1)创建JList对象,并设置数据模型。
(2)为JList添加隔行变色监听器。
(3)设置列表的默认单元格渲染器。
下面是具体的实现代码:
import javax.swing.*;
import java.awt.*;
public class ListColorExample {
public static void main(String[] args) {
// 创建数据模型
DefaultListModel<String> model = new DefaultListModel<>();
for (int i = 0; i < 10; i++) {
model.addElement("数据" + i);
}
// 创建列表
JList<String> list = new JList<>(model);
// 设置隔行变色监听器
list.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int index = list.locationToIndex(e.getPoint());
if (index % 2 == 0) {
list.setSelectionBackground(Color.LIGHT_GRAY);
} else {
list.setSelectionBackground(Color.WHITE);
}
}
});
// 设置默认单元格渲染器
DefaultListCellRenderer renderer = new DefaultListCellRenderer();
renderer.setOpaque(true);
list.setCellRenderer(renderer);
// 创建面板并添加列表
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JScrollPane(list), BorderLayout.CENTER);
// 创建窗口并显示
JFrame frame = new JFrame("隔行变色示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
遍历技巧

使用for循环遍历
在实现隔行变色时,可以使用for循环遍历表格或列表的行或列,以下是一个使用for循环遍历表格的示例:
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
// 获取单元格值
Object value = table.getValueAt(i, j);
// 处理单元格值
}
}
使用增强型for循环遍历
在Java 5及以上版本中,可以使用增强型for循环遍历表格或列表的行或列,以下是一个使用增强型for循环遍历表格的示例:
for (int[] row : table.getModel().getDataVector()) {
for (Object value : row) {
// 获取单元格值
// 处理单元格值
}
}
使用迭代器遍历
在Java中,可以使用迭代器遍历集合,以下是一个使用迭代器遍历表格的示例:
Iterator<Object[]> iterator = table.getModel().getDataVector().iterator();
while (iterator.hasNext()) {
Object[] row = iterator.next();
for (Object value : row) {
// 获取单元格值
// 处理单元格值
}
}
本文介绍了在Java中实现隔行变色的方法,并探讨了相关的遍历技巧,通过掌握这些技巧,可以轻松实现表格或列表的隔行变色,提升界面美观度,在实际开发过程中,可以根据具体需求选择合适的实现方式。



















