Java 我的名字有问题

Java 我的名字有问题,java,Java,这是我的代码: import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.GridLayout; import java.awt.Panel; public class Keyboard extends BorderLayout { public Panel p1 = new Panel(); public Button[] arr = new But

这是我的代码:

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;

public class Keyboard extends BorderLayout
{
    public Panel p1 = new Panel();
    public Button[] arr = new Button[20];
    public String[] name =
    {
        "9", "8", "7", "6", "5", "4", "3", "2", "1", "0",
        "+", "-", "*", "/", ".", "cos", "sin", "=", "pow"
    };

    public Keyboard()
    {
    }

    public String[] getName()
    {
        return name;
    }

    public void setName(String[] name)
    {
        this.name = name;
    }

    public Panel Keyboard()
    {
        for (int i = 0; i < arr.length; i++)
        {
            this.arr[i] = new Button("" + this.name[i]);
        }


        this.p1.setLayout(new GridLayout(6, 6));

        for (int i = 0; i < arr.length; i++)
        {
            this.arr[i].setBackground(Color.LIGHT_GRAY);
            this.arr[i].setForeground(Color.BLUE);
            this.p1.add(this.arr[i]);
        }
        this.p1.setBackground(Color.green);
        return this.p1;
    }
}
导入java.awt.BorderLayout;
导入java.awt.Button;
导入java.awt.Color;
导入java.awt.GridLayout;
导入java.awt.Panel;
公共类键盘扩展了边框布局
{
公共面板p1=新面板();
公共按钮[]arr=新按钮[20];
公共字符串[]名称=
{
"9", "8", "7", "6", "5", "4", "3", "2", "1", "0",
“+”、“-”、“*”、“/”、“、cos”、“sin”、“=”、“pow”
};
公用键盘()
{
}
公共字符串[]getName()
{
返回名称;
}
public void setName(字符串[]名称)
{
this.name=名称;
}
公用面板键盘()
{
对于(int i=0;i
调用名称的字符串数组有问题。。。 如果我在代码处写这行:
this.arr[i]=新按钮(“boaz”)
每个叫波阿斯的按钮。。。
但我想看看这个数组的按钮:

public String[]name={“9”、“8”、“7”、“6”、“5”、“4”、“3”、“2”、“1”、“0”、“0”、“+”、“-”、“*”、“/”、“、”、“、”、“、cos”、“sin”、“=”、“pow”}

但当我写这行代码,将字符串放在按钮的名称处时:

this.arr[i]=新按钮(“+this.name[i])

带按钮的面板不见了

我需要写什么,按钮将有数组名称字符串的名称?
代码行
this.arr[i]=new按钮(“+this.name[i])不起作用…

首先,我不确定您为什么要扩展BorderLayout。没有看到应用程序的其余部分,我在这里猜测。但是,如果您希望在面板中显示计算器按钮,更简单的方法是使用一个框架,其中包含一个包含按钮网格的面板。大概是这样的:

class MyFrame extends JFrame{
  public MyFrame() {
    setLayout(new BorderLayout() );
    JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(6, 6) );

    for (int i = 0; i < name.length; i++) {
      JButton btn = new JButton(name[i]);
      p1.add(btn);
    }

    add(p1, BorderLayout.CENTER);
  }

  private static final String[] name = {"9","8","7","6","5","4","3","2","1","0",
      "+","-","*","/",".","cos","sin","=","pow"};
}
类MyFrame扩展了JFrame{
公共MyFrame(){
setLayout(新的BorderLayout());
JPanel p1=新的JPanel();
p1.设置布局(新网格布局(6,6));
for(int i=0;i
您还有一些其他想法: 您的代码原样在Keyboard()方法的第一个for循环中有一个ArrayIndex异常,因为它检查arr[]变量的长度,但访问的名称[]var的大小较小

此外,我强烈建议您不要使用与类(和构造函数)同名的方法
public Keyboard()
是类的构造函数,也不要有其他方法
JPanel Keyboard()
。叫它别的什么,别的什么都行

您的代码使用awt类(面板、按钮)。学习swing类对应项(JPanel、JButton、JFrame等)。创建它们是为了使GUI构建任务更容易一些


最后,我不能向人们强调这一点。。。如果您是java中GUI构建的初学者,那么这些工具非常优秀。有很多示例代码可以供您学习。

我写这行代码就像您写给我的public Panel p1=new Panel();公共按钮[]arr=新按钮[20];公共字符串[]名称={“9”、“8”、“7”、“6”、“5”、“4”、“3”、“2”、“1”、“0”、“+”、“-”、“*”、“/”、“、”、“、”、“、cos”、“sin”、““=”、“pow”};公共键盘(){for(int i=0;i