Sorry for my bad english:) How can i do jtable header like in picture?
I have this code:
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));
}
}
}
How i can attach functionality to a header controls? I searched for my question in google, but cant find answer. I am sure that the answer to the surface but decided ask for help from knowledgeable people. I will be grateful for code samples.