質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

6880閲覧

Java netbeansのGUI上での画面遷移について

taki

総合スコア12

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2015/05/25 06:18

閲覧ありがとうございます。初質問になります、たきです。
初言語を習得するためにJavaの学習をnetbeansと創るJavaという本を使用し学習している状態です。

現在、javaの基礎を学習するためにSwingに触れJFrameにJButtonをおいたり、そのボタンに色々な効果を持たせたりしているのですが、その過程で生まれた疑問といいますか問題を解決できなかったため質問にいたりました。

質問させてください。
一つのパッケージにクラス(画面)を複数作成したのですが、このクラス(画面)間をJButtonで繋ぎ行き来できるようなプログラムを作ってみたいです。
可能でしたら参考プログラム等の情報を頂きたいです。
実現可能な場合、行き来したい画面は3つになります。
当方でも画面遷移等のワードで検索をかけてみたのですが、自分が実現したいものが出てこず手詰まり状態ですので、何卒ご助言ください。

稚拙な文ではありますが、レスお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2015/05/27 01:13

「自分が実現したいもの」の動作がちょっとイメージが湧かないので、こういうアプリのようなことをしたい、とか、具体的な動作を教えていただけますか? それと、「クラス(画面)を複数作成」のクラスはJFrameですか?
taki

2015/05/27 05:42

レスありがとうございます。 説明不足&下手でお手数おかけして申し訳ありません。 ゲーム画面で例えると、まず「続きから」と「始めから」のボタンがある画面がありまして(画面1)、そこから「続きから」ならロード画面を表示(画面2)、「始めから」なら新規データ作成画面を表示(画面3)というのがアプリイメージです。 画面1からは2.3に遷移可能 画面2からは1に遷移可能 画面3からは1に遷移可能 と、いうような動作をしたいです。 クラスはJFrameで、画面1.2.3は作成済みという状況になります。
guest

回答1

0

ベストアンサー

実装の一例です。
フレームを集中管理するクラスを作って、それを経由してフレームの表示をコントロールします。

Frame2,Frame3のボタンは省略しています。ほかにも細かいところは省いています。
まとめて書く都合上、publicでないクラスがありますが、適宜変更してください。

lang

1// Java7以降対応 2 3import java.awt.FlowLayout; 4import java.awt.event.ActionEvent; 5import javax.swing.AbstractAction; 6import javax.swing.JButton; 7import javax.swing.JFrame; 8import javax.swing.SwingUtilities; 9 10public final class App { 11 12 public static void main(String[] args) { 13 SwingUtilities.invokeLater(new Runnable() { 14 public void run() { 15 FrameController.start(); 16 } 17 }); 18 } 19 20} 21 22final class FrameController { 23 24 private Frame1 frame1; 25 private Frame2 frame2; 26 private Frame3 frame3; 27 28 public FrameController() { 29 this.frame1 = new Frame1(this); 30 this.frame2 = new Frame2(this); 31 this.frame3 = new Frame3(this); 32 } 33 34 public static void start() { 35 FrameController controller = new FrameController(); 36 controller.showFrame1(); 37 } 38 39 public static void showFrame(JFrame frame) { 40 frame.setVisible(true); 41 frame.requestFocus(); 42 } 43 44 public void showFrame1() { 45 showFrame(frame1); 46 } 47 48 public void showFrame2() { 49 showFrame(frame2); 50 } 51 52 public void showFrame3() { 53 showFrame(frame3); 54 } 55 56} 57 58final class Frame1 extends JFrame { 59 60 public Frame1(final FrameController frameController) { 61 setLayout(new FlowLayout()); 62 setDefaultCloseOperation(DISPOSE_ON_CLOSE); 63 add(new JButton(new AbstractAction("続きから") { 64 @Override 65 public void actionPerformed(ActionEvent e) { 66 frameController.showFrame2(); 67 } 68 })); 69 add(new JButton(new AbstractAction("始めから") { 70 @Override 71 public void actionPerformed(ActionEvent e) { 72 frameController.showFrame3(); 73 } 74 })); 75 pack(); 76 } 77 78} 79 80final class Frame2 extends JFrame { 81 82 public Frame2(FrameController frameController) { 83 setTitle("コンティニュー"); 84 setSize(300, 200); 85 setDefaultCloseOperation(DISPOSE_ON_CLOSE); 86 } 87 88} 89 90final class Frame3 extends JFrame { 91 92 public Frame3(FrameController frameController) { 93 setTitle("ニューゲーム"); 94 setSize(300, 200); 95 setDefaultCloseOperation(DISPOSE_ON_CLOSE); 96 } 97 98}

投稿2015/05/27 07:21

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taki

2015/05/27 11:25

まだ用語を使いこなせないレベルなので当たり障りの無いお礼になるのが心苦しいのですが、とても参考になりました。 ありがとうございます。 また機会があれば宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問