在JTable单元格中的复选框旁边插入文本可以通过自定义渲染器(Renderer)来实现。以下是一个示例代码:
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
public class CheckBoxWithTextRenderer extends DefaultTableCellRenderer {
private JCheckBox checkBox;
private JLabel label;
public CheckBoxWithTextRenderer() {
checkBox = new JCheckBox();
label = new JLabel();
label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
// 设置渲染器的布局管理器为BorderLayout,将复选框和文本标签放在同一个单元格中
setLayout(new BorderLayout());
add(checkBox, BorderLayout.WEST);
add(label, BorderLayout.CENTER);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// 设置复选框的选中状态
checkBox.setSelected(value != null && (Boolean) value);
// 设置文本标签的内容
label.setText("文本内容");
// 根据选中状态和是否有焦点设置背景色和前景色
if (isSelected) {
setBackground(table.getSelectionBackground());
setForeground(table.getSelectionForeground());
} else {
setBackground(table.getBackground());
setForeground(table.getForeground());
}
return this;
}
}
使用该渲染器可以将复选框和文本标签放在同一个单元格中,实现在JTable单元格中的复选框旁边插入文本的效果。要使用该渲染器,可以在创建JTable时为相应的列设置渲染器,例如:
JTable table = new JTable();
table.getColumnModel().getColumn(columnIndex).setCellRenderer(new CheckBoxWithTextRenderer());
这样,在指定的列中,每个单元格都会显示一个复选框和文本标签。你可以根据需要修改文本内容、复选框的选中状态等。
领取专属 10元无门槛券
手把手带您无忧上云