🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

button

HTMLで用いる<button>タグです。

Q&A

解決済

1回答

1534閲覧

[Java]JButtonで取得した配列を使ったプログラムを作りたい

yasu_1217

総合スコア14

Java

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

button

HTMLで用いる<button>タグです。

0グッド

0クリップ

投稿2019/12/26 11:10

編集2019/12/26 11:27

JButtonで取得した配列を使ったプログラムを作りたい

JButtonで数値を入力させ、それを配列に格納し、その配列の要素を分析するプログラムを作りたいと考えています。
今回質問したいこととしては、

①closeボタン以外で、配列が満たされる前に入力部分を終わらせる機能をつける方法(例えば、OKボタンを追加する)

②closeボタンなどで入力が終わった後に、その配列を使ってプログラムを実行する方法(例えば、配列内に含まれてない数字を調べるなど)

の2点です。教えていただければとてもありがたいです。よろしくお願いします。

JButtonで数字を入力させるプログラム

Java

1import java.awt.BorderLayout; 2import java.awt.FlowLayout; 3import java.awt.GridLayout; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.JButton; 8import javax.swing.JFrame; 9import javax.swing.JPanel; 10 11class StreamTest2 extends JFrame implements ActionListener { 12 JButton bt1 = new JButton("1"); 13 JButton bt2 = new JButton("2"); 14 JButton bt3 = new JButton("3"); 15 JButton bt4 = new JButton("4"); 16 JButton bt5 = new JButton("5"); 17 JButton bt6 = new JButton("6"); 18 JButton bt7 = new JButton("7"); 19 JButton bt8 = new JButton("8"); 20 JButton bt9 = new JButton("9"); 21 22 static String[] pattern_array = new String[10]; //パターン格納用配列 23 int n = 0; 24 25 StreamTest2() { 26 getContentPane().setLayout(new GridLayout(1, 2)); 27 28 29 bt1.addActionListener(this); 30 bt2.addActionListener(this); 31 bt3.addActionListener(this); 32 bt4.addActionListener(this); 33 bt5.addActionListener(this); 34 bt6.addActionListener(this); 35 bt7.addActionListener(this); 36 bt8.addActionListener(this); 37 bt9.addActionListener(this); 38 39 40 JPanel p = new JPanel(); 41 42 //setLayout(new GridLayout(3,3)); 43 44 p.setLayout(new FlowLayout(FlowLayout.LEFT, 35, 30)); 45 46 p.add(bt1); 47 p.add(bt2); 48 p.add(bt3); 49 p.add(bt4); 50 p.add(bt5); 51 p.add(bt6); 52 p.add(bt7); 53 p.add(bt8); 54 p.add(bt9); 55 56 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 57 setTitle("title"); 58 setSize(300, 300); 59 setVisible(true); 60 61 getContentPane().add(p, BorderLayout.CENTER); 62 } 63 64 public void actionPerformed(ActionEvent e) { 65 66 if(e.getSource() == bt1) { 67 pattern_array[n] = "1"; 68 System.out.print("1"); 69 n++; 70 } 71 72 else if(e.getSource() == bt2) {//2が入力されたとき------------------------------------------------------------- 73 pattern_array[n] = "2"; 74 System.out.print("2"); 75 n++; 76 } 77 78 else if(e.getSource() == bt3) { //3が入力されたとき------------------------------------------------------------ 79 pattern_array[n] = "3"; 80 System.out.print("3"); 81 n++; 82 } 83 84 else if(e.getSource() == bt4) { //4が入力されたとき------------------------------------------------------------ 85 pattern_array[n] = "4"; 86 System.out.print("4"); 87 n++; 88 } 89 90 else if(e.getSource() == bt5) { //5が入力されたとき------------------------------------------------------------ 91 pattern_array[n] = "5"; 92 System.out.print("5"); 93 n++; 94 } 95 96 else if(e.getSource() == bt6) { //6が入力されたとき------------------------------------------------------------ 97 pattern_array[n] = "6"; 98 System.out.print("6"); 99 n++; 100 } 101 102 else if(e.getSource() == bt7) { //7が入力されたとき------------------------------------------------------------ 103 pattern_array[n] = "7"; 104 System.out.print("7"); 105 n++; 106 } 107 108 else if(e.getSource() == bt8) { //8が入力されたとき------------------------------------------------------------ 109 pattern_array[n] = "8"; 110 System.out.print("8"); 111 n++; 112 } 113 114 else if(e.getSource() == bt9) { //9が入力されたとき------------------------------------------------------------- 115 pattern_array[n] = "9"; 116 System.out.print("9"); 117 n++; 118 } 119 } 120 public static void main(String[] args) { 121 new StreamTest2(); 122 123 System.out.println(pattern_array[9]); 124 } 125} 126

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

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

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

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

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

jimbe

2019/12/26 11:16

コンパイルエラーで実行できません.
yasu_1217

2019/12/26 11:28

public static void main(String[] args)内の部分が間違っていたためだと思います。申し訳ございません。 修正しました。
guest

回答1

0

ベストアンサー

closeボタン以外で、配列が満たされる前に入力部分を終わらせる機能をつける方法(例えば、OKボタンを追加する)

それは作る人が決めるべき仕様であって, 質問回答というレベルのお話ではありません.

closeボタンなどで入力が終わった後に、その配列を使ってプログラムを実行する方法(例えば、配列内に含まれてない数字を調べるなど)

ボタンで終わるのでしたらそのボタンのリスナにすれば良いでしょうし, 他の方法で入力が終わるのでしたらその終わった時に実行すれば良いのではないでしょうか.


とりあえず, 10桁数字を入力すると終了しコンソールに数字列を表示するコードです.
10桁未満でも[x]を押せば終了して表示します.

java

1class StreamTest2 extends JFrame implements ActionListener { 2 3 private int patternMaxLength; 4 private StringBuilder pattern = new StringBuilder(); //パターン格納用 5 private JTextField output; 6 7 StreamTest2(int patternMaxLength) { 8 super("title"); 9 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 10 setSize(300, 300); 11 12 addWindowListener(new WindowAdapter() { 13 @Override 14 public void windowClosed(WindowEvent e) { 15 System.out.println(getPattern()); //何する? 16 System.exit(0); 17 } 18 }); 19 20 this.patternMaxLength = patternMaxLength; 21 22 output = new JTextField(); 23 getContentPane().add(output, BorderLayout.NORTH); 24 25 JPanel buttonPanel = new JPanel(new GridLayout(3,3)); 26 for(int i : new int[]{7,8,9,4,5,6,1,2,3}) { 27 JButton button = new JButton(""+i); 28 button.addActionListener(this); 29 buttonPanel.add(button); 30 } 31 getContentPane().add(buttonPanel, BorderLayout.CENTER); 32 } 33 34 public void actionPerformed(ActionEvent e) { 35 pattern.append(((JButton)e.getSource()).getText()); 36 output.setText(pattern.toString()); 37 if(pattern.length() >= patternMaxLength) dispose(); 38 } 39 40 public String getPattern() { return pattern.toString(); } 41 42 public static void main(String[] args) { 43 new StreamTest2(10).setVisible(true); 44 } 45}

投稿2019/12/26 11:56

編集2019/12/27 17:11
jimbe

総合スコア13202

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

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

yasu_1217

2019/12/26 13:27

有難うございます。 自分なりにアレンジしてlistenerを使ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問