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

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

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

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

Java

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

Q&A

解決済

3回答

2621閲覧

NetBeans(Java)で、別画面遷移を行いたい。

lereve

総合スコア12

NetBeans

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

Java

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

0グッド

0クリップ

投稿2018/02/26 02:10

編集2018/02/26 03:19

前提・実現したいこと

[前提]
初めてこういったサイトを利用させていただきます。
趣味でプログラムを触ったことがある程度の初心者です。
今回、会社で初めてJavaを用いたPCソフトを作ることになりました。
質問内容はあまりに根本的な内容になるかとは思いますが、
参考本やHPに書かれている内容ではなかなか理解できず困っています。
是非、ご教授いただきたく思います。

[実現したいこと]
二つの画面間での画面遷移を行いたいと思っています。
最初の画面ではSQLへの"検索"機能を持たせ、
次の画面で"検索結果表示"の機能を持たせたいと思っています。

[開発環境]
NetBeansを使っています。
GUI(というのでしょうか…マウスで画面を作るタイプです)を使っています。

発生している問題・エラーメッセージ

既にいくつかのPCソフトは出来上がっており、今回のソフトはシステム内の一部です。
実装していくに当たり、最初の画面を実装し終えたところで画面遷移のやり方がよくわからないことに気付きました。

同じJavaなのでAndroidで言うIntentを用いて画面に表示させようと思っていたのですが、
自己調査の結果そんな便利な物はないことがわかりました。

そこでこちらのHPを参照し(http://ch.nicovideo.jp/eto/blomaga/ar337351)、
別画面遷移のサンプルを写経してサンプル動作の確認は取れたのですが、
今まで自分が作っていた.javaファイル(JFrame継承)をどうサンプルに乗せればいいのかがわかりません。
![イメージ説明
プロジェクト内はこのような状態になっています。
wip_viewerからadd_mysqlへの画面遷移を考えています。

長文になってしまいましたのでまとめますと、質問は下記3点です。
1.画面遷移の方法は上記HPのやり方で問題ないのか。
2.自分が作った.javaファイル(JFrame継承)を上記HPのやり方で表示するにはどうしたらよいのか。
3.そもそも上記HPの画面遷移をする際には、ラベルやボタンなどは全てコードで入力しなければならないのか。(サンプルコードを自己調査するとどれも.addで追加しているように見受けられました。GUIで作ることはないのでしょうか…。)

javaのみならず開発の経験が少ない為、開発スピードも遅く締切も迫ってきている状態です。
出来れば作り直し、といった絶望的な状況は避けたいと思いながら
「こんなこともわからないのか」と思われる恥ずかしさが勝り、なかなか解決できずに他のソフト開発を進めた結果が今の状況です。
今後もこういった仕事に携わる身として、教えていただいたことは後程時間をかけて理解し、力にするつもりでいます。
しかし今は締切が迫ってきている状況につき、藁にもすがる思いです。
初歩の初歩といった内容で恐縮ですが是非、よろしくお願いします。

追記

Q.新規開発か既存システムのエンハンスか。
A.完全に新規開発です。中小企業でかつ、今までこういった内容の話が話題に上がることもなかったレベルである為、
元になるソフトなども一切なく、私一人でシステム全般を作っています。
(学生時代に少し触ったぐらいの経験しかありませんが、やりたい仕事だったのでとても楽しいです)
サーバーの導入、Apache/MySQLの導入/環境構築、Apache/MySQLとやり取りをするPHPプログラム、
それを受け取って表示するAndroidタブレットのアプリ、
MySQLにデータを登録するjavaのソフト(こちらは画面遷移がないのでtry&errorを繰り返しながらなんとかなりました)、
最後に今回のMySQLのデータを表示できるviewerソフトを作成している段階でこの問題に直面しました。

Q.スタンドアロンかサーブレットか。
A.スタンドアロンだと思います。サーバーとのやり取りは含まれますが、動作自体はPC上で独立して動作させます。

Q.OSは何を使用するか。
A.開発用PCとしてwindows10Proを使用しています。動作するPCはwindows7以上を想定しています。

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

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

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

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

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

unz.hori

2018/02/26 02:28

まず、問いたいのは全くの新規開発なのか既にあるシステムのエンハンスなのかということですが、質問を見る限り新規開発と見受けられます。ただ、開発対象の構成良く分かりません。スタンドアロンなのかサーブレット方式なのかどういうシステムを作ろうとしているのか(勿論、業務内容について詳しく書く必要はありません。)を簡潔に記載していただけると多少アドバイスできることもあるかと思います。
lereve

2018/02/26 02:46

unz.hori様 言葉足らずで申し訳ありませんでした。回答を追記させていただきました。
unz.hori

2018/02/26 02:57

今回のMySQLのデータを表示できるviewerソフトということは検索条件を入れる画面があって、検索条件を入れて実行ボタンなどを押下することによってデータの一覧画面を表示するといった内容だと想像します。質問内容からSwingを使おうとしているみたいですね。Swingも使えるようになるといいんですが結構学習コストは高いです。うーん方式の選択はなかなか難しいですね。今現在は流行りはSpringですかね。Spring Bootとかで調べると結構色々情報があります。
unz.hori

2018/02/26 02:58

ちなみに稼働させようとしているマシンのOSは何でしょうか?それも質問に明記してください。
unz.hori

2018/02/26 03:00

あ、補足です。SpringだとWebシステムになるのでWebアプリ用のサーバが必要になるので目的とちょっと合わないかもです。
lereve

2018/02/26 03:20

unz.hori様 言葉足らずで申し訳ありませんでした。回答を追記させていただきました。Springについては別に調査してみます。
unz.hori

2018/02/26 03:58

SpringみたいなWebアプリケーションの開発も勉強しておいた方が後々のためになります。Webアプリ用のサーバも空いているマシンがあれば普通のPCでセットアップ(LinuxでもWindowsでも)できるでしょうし。あー、後スタンドアローンということであればJavaFXというSwingの後継という選択肢もあります。
guest

回答3

0

ベストアンサー

とりあえず、検索したところSwingの参考ページを見つけたので参照してみてください。
NetBeansでJavaのGUIフリーソフト開発

投稿2018/02/26 03:45

unz.hori

総合スコア1057

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

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

lereve

2018/02/26 04:45

こちらのHPも自己調査時に閲覧し、流し読みしていたのですが簡単とのことなのでこちらの内容で試してみました。sample.javaのjFrame上にjPanelを配置し、その上にjButtonを配置、ボタンのクリックイベントから既存のwip_viewer.javaを読み出す、といった処理を書いてみましたところエラーが発生しました。恐縮なのですが方法はこれであっているのでしょうか? 下記コードとエラーです。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { remove(jPanel1); wip_viewer panel = new wip_viewer(); panel.setSize(200,100); panel.setBackground(Color.red); add(panel); repaint(); validate(); } Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
unz.hori

2018/02/26 04:51

main側のソースも提示してください。
lereve

2018/02/26 04:54

失礼しました。こちらです。 public static void main(String args[]) { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new sample().setVisible(true); } }); }
unz.hori

2018/02/26 05:03

すいませんsampleクラスもお願いします。
lereve

2018/02/26 05:17

申し訳ありません。sample.javaの全文です。 package sample; import java.awt.Color; import javax.swing.JPanel; public class sample extends javax.swing.JFrame { public sample() { initComponents(); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButton1) .addContainerGap(1309, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButton1) .addContainerGap(876, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: remove(jPanel1); wip_viewer panel = new wip_viewer(); panel.setSize(1300,1000); panel.setBackground(Color.red); add(panel); repaint(); validate(); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new sample().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel1; // End of variables declaration }
unz.hori

2018/02/26 05:28

うーん。こっちで試したところエラーは出ないですね。環境はEclipse + Java1.8ですが...
unz.hori

2018/02/26 05:29

wip_viewer.javaのソースも見せてください。
unz.hori

2018/02/26 05:40

ちなみに私がwip=viewer.javaの代わりにした内容は以下です。 package パッケージ; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class wip_viewer extends JFrame { public wip_viewer() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); JPanel contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5,5,5,5)); contentPane.setLayout(new BorderLayout(0,0)); setContentPane(contentPane); } }
unz.hori

2018/02/26 05:46

あー、ボタンを押した時にエラーがでるんですね。
unz.hori

2018/02/26 05:55

JFrameの子として扱えるのはJPanelなのでwip_viewerをJPanelにするといいようです。またソースを見ていて若干指摘事項があります。 ・クラス名の最初の文字は大文字にしてください。 ・クラスのメンバ変数はクラスの先頭に定義してください。
lereve

2018/02/26 06:03

wip_viewer.java自体コードが長い為、今回教えていただくようにtest.javaを作成いたしました。 しかし変わらずjButtonを押した時にエラーが発生します。 ●変更した部分 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: remove(jPanel1); test panel = new test(); panel.setSize(1300,1000); panel.setBackground(Color.red); add(panel); repaint(); validate(); } ●test.java package sample; public class test extends javax.swing.JFrame { public test() { initComponents(); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 300, Short.MAX_VALUE) ); pack(); }// </editor-fold> /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(test.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(test.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(test.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(test.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new test().setVisible(true); } }); } // Variables declaration - do not modify // End of variables declaration }
lereve

2018/02/26 06:07

ご指摘いただいた通り、jFrameからjPanel継承にするとsampleの方は動作できました。 実際のwip_viewerはjFrame継承で作成してしまっているので、jPanelに移す作業が必要なのですね。 ほぼ作り直しになってしまうようですが、少し努力してみます。 長い間お付き合いいただきありがとうございました。
lereve

2018/02/26 06:09

・クラス名の最初の文字は大文字にしてください。 ・クラスのメンバ変数はクラスの先頭に定義してください。 の2点についてですが、こういった勝手(作法)についてはほぼ無知な状態で力業だけで実装している次第でありますので、今後javaのスキルを身につけていく中でマスターしていきたいと思っています。 回りに指摘してくれる人間もいないもので、貴重なご指摘ありがとうございました。
unz.hori

2018/02/26 06:09

JFrame自体がWindowsの子になるためJFrame->JFrameというのができないみたいですね。画面遷移というのもJFrame配下のJPanelを切り替えて行うようです。とっかかりは出来たと思うのであとはTry & Errorで頑張ってみてください。
guest

0

>1.画面遷移の方法は上記HPのやり方で問題ないのか。
特に問題はないと思いますが、他のサイトも参考にしてみてください。

>2.自分が作った.javaファイル(JFrame継承)を上記HPのやり方で表示するにはどうしたらよいのか。
参考ページの第3回でmainメソッドからBaseFrameを呼び出している例があると思いますが、同じようにmainメソッドから自分で作成したものを呼び出せばよいと思います。

投稿2018/02/26 04:28

unz.hori

総合スコア1057

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

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

0

>3.そもそも上記HPの画面遷移をする際には、ラベルやボタンなどは全てコードで入力しなければならないのか。(サンプルコードを自己調査するとどれも.addで追加しているように見受けられました。GUIで作ることはないのでしょうか…。)
NetBeansだとGUIビルダーがあるみたいです。
NetBeans IDEでのSwing GUIのデザイン

投稿2018/02/26 04:17

unz.hori

総合スコア1057

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問