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

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

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

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

解決済

BottunのsetEnabledの切り替え

znr
znr

総合スコア2

Java

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

3回答

0評価

1クリップ

462閲覧

投稿2021/09/10 09:03

編集2021/09/11 07:10

#作ろうとしているシステムの流れ
0. ユーザに問題を提示し、回答してもらう
(回答するごとにカウンタ変数iをカウントしていき、iがある数字に到達したら回答終了とみなす)
0. 全て回答を終えたら、CardPanelによる画面の切り替えが可能な「結果表示ボタン」を表示し、結果表示画面に移行する

#実現したいこと
カウンタ変数iが一定数カウントされたら、自動的にsetEnabledをtrueに変更し、ボタンが有効になるようにしたい
if文でiの数値による動作を書いているが、カウンタ変数iがある数に到達してもボタンが有効にならない

#疑問・予想
エラーは出ていないためif文は機能していると思うが、cardPanelの再描画がうまくいっていないためボタンが有効になっていても表示されない?

#プログラム

package screen; import //(省略)  ・  ・  ・ public class Sc extends JFrame implements ActionListener{ JPanel cardPanel; CardLayout CardLayout; SpringLayout SpringLayout; int i = 0; //カウンタ変数 public static void main(String[] args) { Sc frame = new Sc(); frame.setTitle("画面遷移テスト"); frame.setSize(1450, 900); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setVisible(true); } public Sc() { // panel01(省略) // panel02 JPanel p2 = new JPanel(); p2.setLayout(null);      JButton btn02 = new JButton("C"); //iを増やすイベントを持ったボタン btn02.addActionListener(new Code()); p2.add(btn02) // panel03 JPanel p3 = new JPanel(); p2.setLayout(null); JButton btn03 = new JButton("panel03"); p3.add(btn03); // CardLayout用パネル cardPanel = new JPanel(); CardLayout = new CardLayout(); cardPanel.setLayout(CardLayout); cardPanel.add(p1, "panel01"); cardPanel.add(p2, "panel02"); cardPanel.add(p3, "panel03"); // カード移動用ボタン JButton btn_2to3 = new JButton("結果に進む"); btn_2to3.addActionListener(this); btn_2to3.setActionCommand("panel03"); JPanel btnPanel = new JPanel(); btnPanel.add(btn_1to2); btnPanel.add(btn_2to3); btn_2to3.setEnabled(false); if(i==11){ cardPanel.validate(); cardPanel.repaint(); btn_2to3.setEnabled(true); } // cardPanelとカード移動用ボタンをJFrameに配置 Container contentPane = getContentPane(); contentPane.add(cardPanel, BorderLayout.CENTER); contentPane.add(btnPanel, BorderLayout.PAGE_END); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); CardLayout.show(cardPanel, cmd); } class Code implements ActionListener{ public void actionPerformed(ActionEvent e) { Clip clip = null; AudioInputStream audioInputStream; try{   //省略 i++; } catch (UnsupportedAudioFileException e1) { e1.printStackTrace(); } catch (LineUnavailableException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } }

質問を見やすくするために何箇所か省略させていただいておりますが、
その関係でプログラムが変になっている箇所がありましたら申し訳ありません。
ご回答よろしくお願い致します。

#追記
修正前

public class Sc extends JFrame implements ActionListener{ public static void main(String[] args) { Sc frame = new Sc(); frame.setTitle("画面遷移テスト"); frame.setSize(1450, 900); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setVisible(true); } public Sc(){ ・ ・ ・ } ・ ・ ・ }

修正後

public class Sc extends JFrame implements ActionListener{ public static void main(String[] args) { new Sc().setVisible(true); } public Sc(){ setSize(1450, 900); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); ・ ・ ・ } ・ ・ ・ }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

shiketa

2021/09/11 03:06

> 質問を見やすくするために何箇所か省略させていただいておりますが、 もし、わたしが回答できるかどうかを検討するとしたら、質問内容が読みやすく理解可能であることはもちろんですが、余計な部分を省いてあり、コピペしただけで問題や疑問を再現できるソースが、提示されているかどうか。問題を抱えたヒトは「読みやすく」するために省略しているのかもしれませんが、その原因の所在がわかっていないのに、省略できるものでしょうか?省略した部分に原因がある、かもしれない、とは考えませんか。 最低限のソースで問題を再現できるところまでソースを簡潔にしてゆけば、その過程で原因が浮き上がってくることは、ままあります。浮き上がればそれで解決。解決できなくても、疑問を提示するソースとしては役に立つものになることでしょう。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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