我需要使用密鑰綁定以兩種方式切換。這是我的代碼,它有一種方法。有人可以幫助我使它工作嗎?使用密鑰綁定在兩個窗體之間切換
public class MyFrame extends JFrame {
private FirstForm firstForm = new FirstForm();
private SecondForm secondForm = new SecondForm();
public MyFrame(){
setContentPane(firstForm);
setSize(800,600);
firstForm.addActionListenerForSomeAction(switcher(secondForm));
secondForm.addActionListenerForSomeAction(switcher(firstForm));
keyboardSwitcher(firstForm);
keyboardSwitcher(secondForm);
}
public void keyboardSwitcher(JPanel panel){
InputMap imap = getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
imap.put(KeyStroke.getKeyStroke("ctrl ENTER"),"switchAction");
ActionMap amap = getRootPane().getActionMap();
amap.put("switchAction",switcher(panel));
}
public Action switcher(JPanel panel){
Action action = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
setContentPane(panel);
getContentPane().revalidate();
getContentPane().repaint();
}
};
return action;
}
}
FirstForm
和SecondForm
是我自己的類擴展JPanel
。
1)使用['CardLayout'](http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html),如[本答案](http:///stackoverflow.com/a/5786005/418556)。 2)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –
謝謝。這是我的第一篇文章,我將在未來使用你的指導 – Arseniy
*「我將在未來使用你的指導」*很酷。在那種情況下,我可能會在將來更多地考慮你的問題。當然,你現在可以編輯問題*。 –