Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can try to use something like this. This code provides visual effect with JToggleButton.</p> <p><a href="https://i.stack.imgur.com/GWT72.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GWT72.png" alt="enter image description here"></a></p> <pre><code>import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; public class Test { private static JTable table; public static void main(String[] args) { table = new JTable(new Object[][]{{1,2},{2,3}},new Object[] {"test", "test2"}); TableColumn column = table.getColumnModel().getColumn(0); column.setHeaderRenderer(new BtnRenderer(column.getHeaderValue())); column = table.getColumnModel().getColumn(1); column.setHeaderRenderer(new BtnRenderer(column.getHeaderValue())); table.getTableHeader().addMouseListener(getHeaderMouseListener()); JFrame f = new JFrame(); f.add(new JScrollPane(table)); f.pack(); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.setVisible(true); } private static MouseListener getHeaderMouseListener() { return new MouseAdapter() { @Override public void mousePressed(MouseEvent arg0) { if(arg0.getButton() == 1){ int columnAtPoint = table.columnAtPoint(arg0.getPoint()); /* Get the header portion of the table, and its column model */ JTableHeader header = table.getTableHeader(); TableColumnModel columnModel = header.getColumnModel(); TableColumn column = columnModel.getColumn(columnAtPoint); BtnRenderer headerRenderer = (BtnRenderer) column.getHeaderRenderer(); headerRenderer.actionPerformed(); } else { super.mousePressed(arg0); } } }; } } class BtnRenderer implements TableCellRenderer { private JToggleButton btn; public BtnRenderer(Object headerValue) { btn = new JToggleButton(); btn.addActionListener(System.out::println); btn.setText(headerValue.toString()); } @Override public Component getTableCellRendererComponent( JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) { return btn; } public void actionPerformed() { btn.setSelected(!btn.isSelected()); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload