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

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

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

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

解決済

java:frameは使いまわし、panelを描画・削除してページ遷移したいです

makoto-n
makoto-n

総合スコア436

Java

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

1回答

0リアクション

1クリップ

748閲覧

投稿2019/01/02 18:36

編集2019/01/06 02:30

javaでアプリケーション作成中です。
ページ遷移をしたいのですが、frameを消してnewをして~を繰り返しては移動させたframeが初期の位置に戻ってしまいます。
なのでpanelに部品を埋め込み、遷移するさいにはpanelをremoveAllして新規panelをnewしたいと思ったのですが、
panelを消せずに詰まっています。
どうか改善点・または別の案を押してください。

java

import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; class SSample3_1 extends JFrame { JButton btn1, btn2, btn3, btn4; JPanel p; SSample3_1 dodai2; public static void main(String args[]) { SSample3_1 frame = new SSample3_1("タイトル"); frame.setVisible(true); } SSample3_1(String title) { setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p = new JPanel(); btn1 = new JButton("Button"); btn2 = new JButton("Button"); btn3 = new JButton("Button"); p.add(btn1); p.add(btn2); p.add(btn3); btn1.addActionListener(null); btn2.addActionListener(null); btn3.addActionListener(null); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); } private void junbi2() { JTextField text1 = new JTextField(); text1.setText("aaaaa"); p.add(text1); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if (e.getSource() == btn1) { p.removeAll(); dodai2 = new SSample3_1("title"); this.junbi2(); dodai2.setVisible(true); } else if (e.getSource() == btn2) { p.removeAll(); } else if (e.getSource() == btn3) { p.removeAll(); } } }

removeAllです。失礼しました。

イベントを追加についてですが、
btn1.addActionListener(null)
をthisに変更するとEclipseではエラーになってしまいます。
イベントはゆくゆくは別のファイルに記述したいと考えておりますが、
現状は汚くても実装させることを先に考えています。

btn1...にイベントをaddできてもいません。


(A) インターフェースActionListenerを実装したクラスのインスタンス

java

package db_test; 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.JPanel; import javax.swing.JTextField; class SSample3_1 extends JFrame implements ActionListener { JButton btn1, btn2, btn3, btn4; JPanel p; // SSample3_1 dodai2; public static void main(String args[]) { SSample3_1 frame = new SSample3_1("タイトル"); frame.setVisible(true); } SSample3_1(String title) { setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p = new JPanel(); btn1 = new JButton("Button"); btn2 = new JButton("Button"); btn3 = new JButton("Button"); p.add(btn1); p.add(btn2); p.add(btn3); btn1.addActionListener(this); btn2.addActionListener(this); btn3.addActionListener(this); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); } private void junbi2() { JTextField text1 = new JTextField(); text1.setText("aaaaa"); p.add(text1); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if (e.getSource() == btn1) { this.p.removeAll(); // dodai2 = new SSample3_1("title"); // this.junbi2(); // dodai2.setVisible(true); } else if (e.getSource() == btn2) { p.removeAll(); } else if (e.getSource() == btn3) { p.removeAll(); } } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

asahina1979

2019/01/03 02:44

イベントを登録してないボタンで何をしたいの? 問題のあるイベントを登録した最新のソースを添付してください。
KSwordOfHaste

2019/01/03 03:24

(A)「panelをremoveする」 (B)「panelから全ての子供コンポーネント(ボタン3つのことです)をremoveする」 コードは(B)に見えますが質問文の内容は(A)です。文章は正確にお願いします。読む側が混乱し質問者さんの意図をつかみにくくなります。
makoto-n

2019/01/03 17:33

すみません、問題のあるソースはこれ一つのみです。 イベントを追加できていない、もしくは、remobeAllの使い方が変なのかわかりません。 removeAllです、失礼しました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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