JTable
の列ヘッダーにActionListener
を追加することは可能ですか?JTableの列ヘッダーにActionListenerを追加
はここ
は今、私は別のウィンドウで列の説明を表示できるようにしたい列のヘッダー(例えばWQE
、SDM
)にActionListener
を追加したい私のテーブルです。
JTable
の列ヘッダーにActionListener
を追加することは可能ですか?JTableの列ヘッダーにActionListenerを追加
はここ
は今、私は別のウィンドウで列の説明を表示できるようにしたい列のヘッダー(例えばWQE
、SDM
)にActionListener
を追加したい私のテーブルです。
カラムヘッダにヘッダが
コードクリックされた列を見つけるため
// example table with 2 cols
JFrame frame = new JFrame();
final JTable table = new JTable(new DefaultTableModel(new String[] {
"foo", "bar" }, 2));
frame.getContentPane().setLayout(
new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.getContentPane().add(table.getTableHeader());
frame.getContentPane().add(table);
frame.pack();
frame.setVisible(true);
// listener
table.getTableHeader().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int col = table.columnAtPoint(e.getPoint());
String name = table.getColumnName(col);
System.out.println("Column index selected " + col + " " + name);
}
});
はい可能です。あなたはこのように列ヘッダーおよび細胞上の両方のマウスイベントを追加することができます。
private class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
if (table.equals(e.getSource())) {
int colIdx = table.columnAtPoint(e.getPoint());
int rowIdx = table.rowAtPoint(e.getPoint());
Object obj = table.getModel().getValueAt(rowIdx, colIdx) ;//This gets the value in the cells
String str = obj.toString();//This converts that Value to String
JTextField somefield = new JTextField();//Choose a JTextField
somefield.setText(str);//Populates the Clicked value to the JTextField
System.out.println("Row: " + rowIdx + " " + "Colulmn: " + colIdx);
}
else if (header.equals(e.getSource())) {
int selectedColumnIdx = header.columnAtPoint(e.getPoint());
String colName = table.getColumnName(header.columnAtPoint(e.getPoint()));
System.out.println("Column Name: " + colName);
System.out.println("Selected Column: " + selectedColumnIdx);
}
}
}
は、あなたの好みや好みに合わせてサンプルコードを修正します。
['ListSelectionListener'](http://docs.oracle.com/javase/tutorial/uiswing/components/table。 html#selection)をテーブル自体に追加します。ヘッダーリスナーは、@ Adamのずっと前の[answer](http://stackoverflow.com/a/9992631/230513)を繰り返します。 – trashgod
この[Q&A](http://stackoverflow.com/q/7137786/230513)も参照してください。 – trashgod