キーボードボタンが押されたとき(つまりCTRLボタン)に行が選択されているときに、JTableのコントロールを操作して別の機能を提供する簡単な方法はありますか?私は、行のCTRL +クリック(マウスクリック)が選択された行の選択を解除し、行を選択しないという表を作成するよう求められました。ユーザーが選択されていない行をCTRL +クリックすると、何も起こりません。JTableのCtrl +クリックの動作を変更する
私はテーブルを作成し、CTRL + A(select all)のような機能を無効にできました.MouseEventが生成されたときにコントロールボタンが押されたかどうかを確認できましたが、 CTRL +クリックの調整方法を理解しているようです。ここではいくつかのコードです:私はテーブルから選択したすべての行を取得し、その後、新たにクリックされた行はselectedRowsにあったかどうかを確認するつもりだったと周りにプレーしたのmousePressedメソッドで
package nicky;
import javax.swing.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.*;
public class TableTester extends JPanel {
public TableTester() {
super(new GridLayout(1,0));
final String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
final Object[][] data = {
{"Tom", "Roberts","Athletic", new Integer(5), new Boolean(false)},
{"Sarah", "Watt", "Football", new Integer(3), new Boolean(true)},
{"Laura", "Brown", "Swimming", new Integer(2), new Boolean(false)},
{"Simon", "Smith", "Tennis", new Integer(20), new Boolean(true)},
{"Paul", "Jones", "Rugby", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 100));
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
table.addMouseListener(new MouseListener(){
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}
public void mouseReleased(MouseEvent me){}
public void mouseClicked(MouseEvent me){}
public void mousePressed(MouseEvent me){
if (me.isControlDown()){
System.out.println("This is working ");
}
}
});
InputMap inputMap = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK);
inputMap.put(keyStroke, "none");
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("TableTester");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableTester newContentPane = new TableTester();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
...しかし、どの行がMouseEventに関連付けられているかを確認する方法があるかどうかはわかりません。
任意のアイデア/提案をいただければ幸いです
(また、私はこのような予想される動作があまりにも多くの周りに再生するべきではありません知っているが、それは会社でレガシーシステムを複製することです)!
Woohoo!出来た!ありがとう:) はい、私は要件が狂っていると思う...そしてこれはそれの半分でもありません! – Nicks