キーバインディングを使用して2つの方法で切り替える必要があります。ここで私のコードは、それは片方の方法で動作します。誰かが私を両方の方法で動かせるように助けることができますか?キーバインディングを使用した2つのフォーム間の切り替え
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
* "私はあなたの指導を将来的に使用する" *クール。その場合、私は将来あなたの質問にもっと入れてもいいかもしれません。もちろん、あなたは今質問を編集するかもしれません。* –