JDialog
マウスとキーのアクションに応答するを作成したかったのです。ダイアログには、彼にレコードを選択してもらいたい jTable が含まれています。彼は、ダブルクリックするか、キー (「2」など) を押すことで、それを選択できるはずです。
だから私はこれから始めました:
public showDialog(TableModel model) {
super(new JFrame(), "Please select a record...");
table = new JTable(model);
//add JTable with ScrollPane
JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(800, Math.min(table.getPreferredSize().height+60, 800)));
scrollPane.getViewport().add(table);
add(scrollPane);
//display
setAlwaysOnTop(true);
toFront();
pack();
setVisible(true);
//mouse
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("clicked");
}
});
//keys
table.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(java.awt.event.KeyEvent evt) {}
@Override
public void keyReleased(java.awt.event.KeyEvent evt) {}
@Override
public void keyPressed(java.awt.event.KeyEvent evt) {
System.out.println(evt.getKeyChar() + " pressed");
}
});
}
これは問題なく動作します。
ただし、ステートメントで同じことを行うとsetModal(true);
、リスナーは機能しなくなります。
リスナーの機能を失わずに JDialog をモーダルにするにはどうすればよいですか?