好的,所以我试图从我用来学习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
声明数组,但这只是给了我错误:
此行的多个标记
- 按钮无法解析为类型
-Buttons无法解析为类型
我改为尝试了这个:
JButton[] buttons = new JButton[10]
然后将每个按钮添加到数组中:
buttons[0] = "button0";
当我声明数组时,这样做并没有给我一个错误,但是当我写了buttons[0]
行时,我收到了这个错误:
令牌“按钮”上的语法错误,删除此令牌
所以,我需要帮助弄清楚如何做到这一点。此外,这本书可以在这里找到:http://myflex.org/books/java4kids/JavaKid811.pdf,练习在第73页。 如果我列出了很多信息,我会道歉。这只是因为我对Java很新,而且我不确定什么是必要的。感谢帮助。感谢。
答案 0 :(得分:8)
当您需要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();
}
}
答案 1 :(得分:2)
JButton[] buttons = new JButton[10]
上面这一行是正确的,但我看到两点混淆:
这一行:
buttons[0] = "button0";
应改为:
buttons[0] = new JButton("button0");
原因是,在您的代码中,您尝试将String
分配给buttons[0]
,而不是预期的JButton
。
好的,所以我尝试使用Buttons [] numbuttons行声明数组, 但这只是给了我错误:这一行有多个标记 -Buttons无法解析为类型-Buttons无法解析为类型
Buttons
不是标准的Java类。进行区分大小写的搜索
对于Buttons
并将所有匹配替换为JButton
。
如果您仍然遇到问题,请复制并粘贴确切代码以查找无效的每个变体。
答案 2 :(得分:1)
如果我理解你的问题,你需要循环来实例化和存储JButtons。
for (int i=0; i<10; i++) {
numButton[i] = new JButton(String.valueOf(i));
}
您需要将循环控制变量转换为JButton构造函数的String参数。
答案 3 :(得分:0)
你应该使用
buttons[0] = button0;
而不是
buttons[0] = "button0";
答案 4 :(得分:0)
更具体地说,您正在尝试将一个字符串放入为 JButton 制作的数组中。 Java 不喜欢你以这种方式混合数据类型,并抛出错误。