Swing で、画面移動
ポイント
// 移動先の画面をNew
SwingSampleSubView subView = new SwingSampleSubView();
// 移動先の画面を表示
subView.setVisible(true);
// 現在の画面を非表示
this.setVisible(false);
サンプル
メイン画面
SwingSampleMainView.java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SwingSampleMainView extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JButton button;
public SwingSampleMainView() {
// 閉じるボタン押下時のアプリケーションの振る舞いを決定
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウィンドウの初期サイズ(幅、高さ)をピクセル単位で設定
this.setSize(320, 160);
// ウィンドウの表示場所を規定
this.setLocationRelativeTo(null);
// タイトルの表示
this.setTitle("SwingSampleMainView");
// JFrameよりContentPaneを取得
Container contentPane = this.getContentPane();
// ラベルのインスタンスを生成
JLabel label = new JLabel("Main");
// ボタンのインスタンスを生成
this.button = new JButton("Go Sub");
// ボタンにイベントを追加
this.button.addActionListener(this);
// ラベルをContentPaneに配置
contentPane.add(label, BorderLayout.CENTER);
// ボタンをContentPaneに配置
contentPane.add(this.button, BorderLayout.SOUTH);
}
public static void main(String[] args) {
SwingSampleMainView view = new SwingSampleMainView();
// ウィンドウを表示
view.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == this.button) {
// ★ここに注目★
SwingSampleSubView subView = new SwingSampleSubView();
subView.setVisible(true);
this.setVisible(false);
} else {
System.exit(0);
}
}
}
サブ画面(移動先)
SwingSampleSubView.java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SwingSampleSubView extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
JButton button;
public SwingSampleSubView() {
// 閉じるボタン押下時のアプリケーションの振る舞いを決定
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウィンドウの初期サイズ(幅、高さ)をピクセル単位で設定
this.setSize(320, 160);
// ウィンドウの表示場所を規定
this.setLocationRelativeTo(null);
// タイトルの表示
this.setTitle("SwingSampleSubView");
// JFrameよりContentPaneを取得
Container contentPane = this.getContentPane();
// ラベルのインスタンスを生成
JLabel label = new JLabel("Sub");
// ボタンのインスタンスを生成
this.button = new JButton("Go Main");
// ボタンにイベントを追加
this.button.addActionListener(this);
// ラベルをContentPaneに配置
contentPane.add(label, BorderLayout.CENTER);
// ボタンをContentPaneに配置
contentPane.add(this.button, BorderLayout.SOUTH);
}
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == this.button) {
SwingSampleMainView mainView = new SwingSampleMainView();
mainView.setVisible(true);
this.setVisible(false);
} else {
System.exit(0);
}
}
}