さて、私は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が初めてで、何が必要かわからないからです。助けていただければ幸いです。ありがとうございます。
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();
}
}
JButton[] buttons = new JButton[10]
上記の行は正しいですが、2つの混乱点があります。
この行:
buttons[0] = "button0";
代わりに次のようにする必要があります。
buttons[0] = new JButton("button0");
その理由は、コードで、予期されたString
ではなく、JButton
をbuttons[0]
に割り当てようとしているためです。
わかりました。Buttons[] numbuttons行を使用して配列を宣言しようとしましたが、エラーが発生しました。この行に複数のマーカーがあります-ボタンをタイプに解決できません-ボタンをタイプに解決できません
Buttons
は標準のJavaクラスではありません。大文字と小文字を区別してButtons
を検索し、すべての一致をJButton
に置き換えます。
それでも問題が解決しない場合は、機能していないバリエーションごとに正確なコードをコピーして貼り付けてください。
私があなたの問題を理解しているなら、JButtonをインスタンス化して保存するためのループが必要です。
for (int i=0; i<10; i++) {
numButton[i] = new JButton(String.valueOf(i));
}
ループ制御変数をJButtonコンストラクターのString引数に変換する必要があります。
あなたが使用する必要があります
buttons[0] = button0;
ではなく
buttons[0] = "button0";