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

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

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

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

Q&A

解決済

2回答

928閲覧

ボタンをクリックしたときに,チェックされているラジオボタンを表示する方法が分かりません

OHASI

総合スコア96

Java

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

1グッド

0クリップ

投稿2022/07/11 17:20

問題文

 実行例のように,表示用に 1 つのラベル,制御用に 3 つのラジオボタン(他のボタンと排他),3 つのチェックボックス,1 つのボタンがコンテントペーンに配置されている.「状態取得」のボタンを押したとき,ラジオボタンとチェックボックスの状態を取得し,選択されているものをカンマ(,)区切りでラベルに表示するプログラムを作成しなさい.ただし,ウィンドウサイズは横 480 画素,縦 300 画素とし,ウィンドウのタイトルに「課題5」と表示すること.また,ウィンドウはプログラムの起動時にディスプレイの中央に表示されるようにすること.

java

1public class Kadai5 { 2 3   ここに必要なプロパティとメソッドを書く. 4   5  public static void main(String[] args) { 6    SwingUtilities.invokeLater(new Runnable() { 7      public void run() { 8        Kadai5 application = new Kadai5(); 9        application.getJFrame().setVisible(true); 10      } 11    }); 12  } 13}

実行例

イメージ説明

コード

java

1package kadai; 2 3import java.awt.FlowLayout; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.ButtonGroup; 8import javax.swing.JButton; 9import javax.swing.JCheckBox; 10import javax.swing.JFrame; 11import javax.swing.JPanel; 12import javax.swing.JRadioButton; 13 14public class Kadai5 { 15 public static void main(String[] args) { 16 // TODO 自動生成されたメソッド・スタブ 17 JFrame jf = new JFrame("課題5"); 18 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 19 jf.setSize(480, 300); 20 jf.setLocationRelativeTo(null); 21 22 JPanel cp = (JPanel)jf.getContentPane(); 23 cp.setLayout(new FlowLayout()); 24 25 JCheckBox jc1 = new JCheckBox("チェックボックス1"); 26 JCheckBox jc2 = new JCheckBox("チェックボックス2"); 27 JCheckBox jc3 = new JCheckBox("チェックボックス3"); 28 cp.add(jc1); 29 cp.add(jc2); 30 cp.add(jc3); 31 32 JRadioButton jr1 = new JRadioButton("ラジオボタン1"); 33 jr1.setVerticalAlignment(JRadioButton.TOP); 34 cp.add(jr1); 35 36 JRadioButton jr2 = new JRadioButton("ラジオボタン2"); 37 jr2.setVerticalAlignment(JRadioButton.CENTER); 38 cp.add(jr2); 39 40 JRadioButton jr3 = new JRadioButton("ラジオボタン3"); 41 jr3.setVerticalAlignment(JRadioButton.BOTTOM); 42 cp.add(jr3); 43 44 ButtonGroup bg = new ButtonGroup(); 45 bg.add(jr1); 46 bg.add(jr2); 47 bg.add(jr3); 48 49 JButton jb = new JButton("状態取得"); 50 jb.setBounds(0, 250, 480, 50); 51 cp.add(jb); 52 jb.addActionListener(new MyActionListener()); 53 54 jf.setVisible(true); 55 } 56 57} 58 59class MyActionListener implements ActionListener { 60 public void actionPerformed (ActionEvent e) { 61 // ボタンが押されたら 62 if (jc1.isSelected()) { 63 System.out.println("チェックボックス1,"); 64 } 65 if (jc2.isSelected()) { 66 System.out.println("チェックボックス2,"); 67 } 68 if (jc3.isSelected()) { 69 System.out.println("チェックボックス3,"); 70 } 71 } 72}

エラー文

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: jc1 を解決できません jc2 を解決できません jc3 を解決できません at kadai/kadai.MyActionListener.actionPerformed(Kadai5.java:68) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

自分のコードの実行例

イメージ説明

質問

  1. ラジオボタンとチェックボックスを縦列にする方法が分かりません.
  2. ボタンの位置と大きさを指定しているが,反映されません.
  3. jc1,jc2,jc3を解決できませんの解決方法が分かりません.
  4. また,課題文の例文のここに必要なプロパティとメソッドを書くのところにまとめる方法が分かりません.

以上よろしくお願いいたします.

TN8001👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

ラジオボタンとチェックボックスを縦列にする方法が分かりません.

FlowLayoutを使うのではないということです。
課題だということは、すでに習っているほかのレイアウトがあるはずです。
具体的にはGridLayoutBoxLayout(あるいはBox)等を入れ子で使います。

レイアウト図

ボタンの位置と大きさを指定しているが,反映されません.

適切なレイアウトを使用すれば、大きさを指定する必要はありません。

jc1,jc2,jc3を解決できませんの解決方法が分かりません.

jc1等はローカル変数ですから、外部のクラスからは当然見えません。

  • MyActionListenerをローカルクラスあるいは匿名クラスにする
  • MyActionListenerをインナークラスにしたうえで、jc1等をフィールドにする
  • jc1等をstaticフィールドにする

等の処置が必要です。
これがわからないとなると、教科書をはじめから読み直したほうがいいと思います。

また,課題文の例文のここに必要なプロパティとメソッドを書くのところにまとめる方法が分かりません.

mainの内容が全く違いますね?
mainは一切変えずにgetJFrameメソッドや(必要なら)プロパティ(フィールドのこと?)を作って、画像通りのプログラムを完成させろ」という意味でしょう。

端的にはmainの内容をgetJFrameメソッドに移し、最後にreturn jf;とするぐらいでしょうか。


「ラベルに表示」となっているのに、System.out.printlnではまずいでしょう。

画像ではラベルに表示されたコンポーネントの最後にカンマがついていません(おそらくここも評価ポイントのはず)
単純にif文で名前を追加していくような方法では、最後にもカンマがついてしまいます。どうにかする必要があるでしょう。


課題の内容に対して、OHASIさんの理解が全く追い付いていない印象です。

答えを書くのは簡単ですが、この課題だけ解決しても全く無意味でしょう。
(あまり時間もないのかもしれませんが)「変数のスコープ」と「Swingのレイアウト」を、もう一度復習されたほうがよいと思います。

投稿2022/07/11 22:18

編集2022/07/11 22:25
TN8001

総合スコア9244

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

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

OHASI

2022/07/12 00:08

分かりやすく丁寧な回答,ありがとうございます.
guest

0

jc1からjc3がKadai5クラスのmainメソッド内で宣言されているローカル変数になっているため他のクラスや他のメソッドからアクセスできない状態になっているからです。
とりあえずjc1からjc3をpublicなクラス変数にしてMyActionListenerからアクセスできる状態にしてください。
(オブジェクト指向的にはアレだけどそれ以前の問題だからなぁ・・・)

投稿2022/07/11 18:16

RiaFeed

総合スコア2701

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

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

OHASI

2022/07/12 00:09

ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問