web-dev-qa-db-ja.com

JButtonオブジェクトを保持する配列

さて、私はJavaを学ぶために使用している本から演習を行おうとしています。これが私がこれまでに持っているコードです:

_import javax.swing.*;
import Java.awt.GridLayout;
import Java.awt.BorderLayout;
public class Calculator {
    //Declaration of all calculator's components.
    JPanel windowContent;
    JTextField displayField;
    JButton button0;
    JButton button1;
    JButton button2;
    JButton button3;
    JButton button4;
    JButton button5;
    JButton button6;
    JButton button7;
    JButton button8;
    JButton button9;
    JButton buttonPoint;
    JButton buttonAdd;
    JButton buttonEqual;
    JPanel pl;

    //Constructor creates the components in memory and adds the to the frame using combination of Borderlayout.
    Calculator() {
        windowContent= new JPanel();

    // Set the layout manager for this panel
        BorderLayout bl = new BorderLayout();
        windowContent.setLayout(bl);

    //Create the display field and place it in the North area of the window
        displayField = new JTextField(30);
        windowContent.add("North",displayField);

    //Create button field and place it in the North area of the window
        button0=new JButton("0");
        button1=new JButton("1");
        button2=new JButton("2");
        button3=new JButton("3");
        button4=new JButton("4");
        button5=new JButton("5");
        button6=new JButton("6");
        button7=new JButton("7");
        button8=new JButton("8");
        button9=new JButton("9");
        buttonAdd=new JButton("+");
        buttonPoint = new JButton(".");
        buttonEqual=new JButton("=");

    //Create the panel with the GridLayout that will contain 12 buttons - 10 numeric ones, and button with the points
    //and the equal sign.
        pl = new JPanel ();
        GridLayout gl =new GridLayout(4,3);
        pl.setLayout(gl);
    //Add window controls to the panel pl.
        pl.add(button1);
        pl.add(button2);
        pl.add(button3);
        pl.add(button4);
        pl.add(button5);
        pl.add(button6);
        pl.add(button7);
        pl.add(button8);
        pl.add(button9);
        pl.add(buttonAdd);
        pl.add(buttonPoint);
        pl.add(buttonEqual);

    //Add the panel pl to the center area of the window
        windowContent.add("Center",pl);
    //Create the frame and set its content pane
        JFrame frame = new JFrame("Calculator");
        frame.setContentPane(windowContent);
    //set the size of the window to be big enough to accomodate all controls.
        frame.pack();
    //Finnaly, display the window
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
    }
}
_

正確な言い回しの演習は次のとおりです。

クラスCalculator.Javaを変更して、次のように宣言された10要素配列のすべての数値ボタンを保持します。

_Buttons[] numButtons= new Buttons[10];_

から始まる10行を置き換えます

button0=new JButton("0");

ボタンを作成してこの配列に格納するループを使用します。

わかりました。_Buttons[] numbuttons line_を使用して配列を宣言しようとしましたが、エラーが発生しました。

この行に複数のマーカー
-ボタンをタイプに解決できません
-ボタンをタイプに解決できません

私は代わりにこれを試しました:

_JButton[] buttons = new JButton[10]
_

次に、次のように各ボタンを配列に追加しました。

_buttons[0] = "button0";
_

これを行っても、配列を宣言したときにエラーは発生しませんでしたが、_buttons[0]_行を書き込んだときに、次のエラーが発生しました。

トークン「ボタン」の構文エラー、このトークンを削除

だから、私はこれを行う方法を理解するのに助けが必要です。また、この本はここにあります: http://myflex.org/books/Java4kids/JavaKid811.pdf そして練習は73ページにあります。多くの情報をリストしている場合はお詫び申し上げます。 Javaが初めてで、何が必要かわからないからです。助けていただければ幸いです。ありがとうございます。

5
Jack Davis

JButtonが必要なときに、配列スペースを文字列に設定しようとしています。

あなたはこれをするべきです

buttons[0] = new JButton("0");

の代わりに

buttons[0] = "button0";

編集:

私はこれをしました

import javax.swing.*;

public class test {

    public static void main(String[] args) {
        JButton[] buttons = new JButton[10];

        buttons[0] = new JButton("0");

        System.out.println(buttons[0].getText());
    }

}

0 

エラーがその行にないように出力します。

編集:コード

Calculator.Java

import javax.swing.*;
import Java.awt.GridLayout;
import Java.awt.BorderLayout;
import Java.awt.event.ActionEvent;
import Java.awt.event.ActionListener;
public class Calculator {
    //Declaration of all calculator's components.
    JPanel windowContent;
    JTextField displayField;
    JButton buttons[];
    JButton buttonPoint;
    JButton buttonAdd;
    JButton buttonEqual;
    JPanel pl;

    //Constructor creates the components in memory and adds the to the frame using combination of Borderlayout.
    Calculator() {
        windowContent= new JPanel();
        buttons = new JButton[10];

    // Set the layout manager for this panel
        BorderLayout bl = new BorderLayout();
        windowContent.setLayout(bl);

    //Create the display field and place it in the North area of the window
        displayField = new JTextField(30);
        windowContent.add("North",displayField);

    //Create button field and place it in the North area of the window
        for(int i = 0; i < 10; i++) {
            buttons[i] = new JButton(String.valueOf(i));
        }

        buttonAdd=new JButton("+");
        buttonPoint = new JButton(".");
        buttonEqual=new JButton("=");

    //Create the panel with the GridLayout that will contain 12 buttons - 10 numeric ones, and button with the points
    //and the equal sign.
        pl = new JPanel ();
        GridLayout gl =new GridLayout(4,3);
        pl.setLayout(gl);
    //Add window controls to the panel pl.

        for(int i = 0; i < 10; i++) {
            pl.add(buttons[i]);
        }
        pl.add(buttonAdd);
        pl.add(buttonPoint);
        pl.add(buttonEqual);

    //Add the panel pl to the center area of the window
        windowContent.add("Center",pl);
    //Create the frame and set its content pane
        JFrame frame = new JFrame("Calculator");
        frame.setContentPane(windowContent);
    //set the size of the window to be big enough to accomodate all controls.
        frame.pack();
    //Finnaly, display the window
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
    }
}
8
twain249
JButton[] buttons = new JButton[10]

上記の行は正しいですが、2つの混乱点があります。

  1. この行:

    buttons[0] = "button0";
    

    代わりに次のようにする必要があります。

    buttons[0] = new JButton("button0");
    

    その理由は、コードで、予期されたStringではなく、JButtonbuttons[0]に割り当てようとしているためです。

  2. わかりました。Buttons[] numbuttons行を使用して配列を宣言しようとしましたが、エラーが発生しました。この行に複数のマーカーがあります-ボタンをタイプに解決できません-ボタンをタイプに解決できません

    Buttonsは標準のJavaクラスではありません。大文字と小文字を区別してButtonsを検索し、すべての一致をJButtonに置き換えます。

それでも問題が解決しない場合は、機能していないバリエーションごとに正確なコードをコピーして貼り付けてください。

2
rob

私があなたの問題を理解しているなら、JButtonをインスタンス化して保存するためのループが必要です。

for (int i=0; i<10; i++) {
    numButton[i] = new JButton(String.valueOf(i));
}

ループ制御変数をJButtonコンストラクターのString引数に変換する必要があります。

1
Raevik

あなたが使用する必要があります

buttons[0] = button0;

ではなく

buttons[0] = "button0";
0
Mayur