Java 具有多个控件的jtable自定义标头
对不起,我的英语不好:) 我怎样做jtable header,如中所示 我有以下代码:Java 具有多个控件的jtable自定义标头,java,swing,jtable,jtableheader,Java,Swing,Jtable,Jtableheader,对不起,我的英语不好:) 我怎样做jtable header,如中所示 我有以下代码: package com.tester; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import java.awt.BorderLayout; import java.awt.event.Mous
package com.tester;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableHeaderTester {
JFrame frame;
private JTable table;
public TableHeaderTester() {
frame = new JFrame();
JScrollPane scrollPane = new JScrollPane();
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setBounds(100, 100, 950, 600);
table = new JTable();
scrollPane.setViewportView(table);
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addColumn("A", new Object[]{"item1","item2","item3"});
model.addColumn("B", new Object[]{"item2","item2","item3"});
String[] values = new String[]{"item1", "item2", "item3"};
table.getTableHeader().setDefaultRenderer(new SimpleHeaderRenderer(values));
frame.setVisible(true);
}
public static void main(String[] args) {
new TableHeaderTester();
}
}
package com.tester;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JCheckBox;
import javax.swing.border.BevelBorder;
import javax.swing.SwingConstants;
import java.awt.Font;
public class SimpleHeaderRenderer extends JPanel implements TableCellRenderer {
private JComboBox comboBox;
private JCheckBox chckbxNewCheckBox;
private JLabel lblNewLabel;
public SimpleHeaderRenderer(String[] items) {
setBorder(new BevelBorder(BevelBorder.RAISED, null, null, null, null));
setLayout(new BorderLayout(0, 0));
lblNewLabel = new JLabel("Column header title");
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
comboBox = new JComboBox(items);
chckbxNewCheckBox = new JCheckBox("Show in report");
add(comboBox, BorderLayout.CENTER);
add(lblNewLabel, BorderLayout.NORTH);
add(chckbxNewCheckBox, BorderLayout.SOUTH);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return this;
}
public class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
}
如何将功能附加到标题控件?
我在谷歌上搜索我的问题,但找不到答案。
我确信答案是表面的,但决定向知识渊博的人寻求帮助。
我将非常感谢代码示例。可能会对您有所帮助。这不是我所要求的。