KeyEvent og KeyListener
HejJeg har en klasse som extender JDialog som jeg bruger til mange af mine grænseflader, da jeg så altid har en OK og en CANCEL button. Nu vil jeg så gerne have en keylistener på som reagerer på ENTER tasten, altså skal OK knappen reagerer på ENTER og CANCEL skal reagere på ESC tasten
Mit setup ser sådan ud:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ModalContainer extends JDialog {
private JButton close;
private JButton cancel;
public ModalContainer(JFrame f, JComponent jc, String title) {
this(f, jc, title, "OK", null);
}
public ModalContainer(JFrame f, JComponent jc, String title, String okStr, String cancelStr) {
super(f, true);
setResizable(false);
setTitle(title);
getContentPane().setLayout(new BorderLayout(0,0));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel buttonPane = new JPanel(new FlowLayout());
close = new JButton(okStr);
buttonPane.add(close);
if (cancelStr != null) {
cancel = new JButton(cancelStr);
buttonPane.add(cancel);
}
getContentPane().add(buttonPane, BorderLayout.SOUTH);
close.addActionListener (
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (okActivated()) hide();
}
}
);
if (cancelStr != null) {
cancel.addActionListener (
new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (cancelActivated()) hide();
}
}
);
}
if (jc != null) setComponent(jc);
--> close.addKeyListener(this);
--> cancel.addKeyListener(this);
}
public boolean okActivated() { return true; }
public boolean cancelActivated() { return true; }
public void setComponent(JComponent jc) {
getContentPane().add(jc, BorderLayout.CENTER);
pack();
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dsize = getSize();
setLocation((size.width - dsize.width)/2, (size.height - dsize.height)/2);
show();
}
}
------------------------------------------------
public class GroupPanel extends ModalContainer {
public GroupPanel(JFrame f, CustomerGroup customerGroup){
super(f, null, "C_CREATE_PANEL_TITLE", "OK", "CANCEL");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(false);
pack();
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dsize = getPreferredSize();
setLocation((size.width - dsize.width) / 2, (size.height - dsize.height) / 2);
}
public boolean okActivated() { return true; System.out.println("TEST"); }
public boolean cancelActivated() {return true;}
}
-----------------------
Burde min grouppanel så ikke reagere på ENTER knappen sådan uden videre eller tager jeg fejl ?
