【Java】【Swing】Swing で、画面移動

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);
          }
     }
}