使用提供的构造函数和方法在 main 中仅创建一个 object
Creating just an object in main from using the constructor and method that is provided
这只是计算器的显示。我想做的是将所有主要代码放入计算器方法中。只留下
new calculator();
作为主框架中正在创建的框架的object。
我试图将所有内容都向上移动,但我会收到一个我无法从 main 中理解的错误。有人介意帮帮我吗?
import java.awt.*;
import javax.swing.*;
public class calculator extends JFrame {
public calculator() {
super("Calculator");
setLayout(new BorderLayout());
setSize(new Dimension(250,250));
}
public static void main(String[] args) {
calculator c = new calculator();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
GridLayout gl = new GridLayout(4,4,5,5);
JButton b1 = new JButton("7");
JButton b2 = new JButton("8");
JButton b3 = new JButton("9");
JButton b4 = new JButton("/");
JButton b5 = new JButton("4");
JButton b6 = new JButton("5");
JButton b7 = new JButton("6");
JButton b8 = new JButton("*");
JButton b9 = new JButton("1");
JButton b10 = new JButton("2");
JButton b11 = new JButton("3");
JButton b12 = new JButton("-");
JButton b13 = new JButton("0");
JButton b14 = new JButton(".");
JButton b15 = new JButton("=");
JButton b16 = new JButton("+");
panel2.add(b1);
b1.setBackground(Color.white);
b1.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b2);
b2.setBackground(Color.BLACK);
b2.setFont(new Font("Sans Serif", Font.BOLD, 16));
b2.setForeground(Color.WHITE);
panel2.add(b3);
b3.setBackground(Color.white);
b3.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b4);
b4.setBackground(Color.BLACK);
b4.setFont(new Font("Sans Serif", Font.BOLD, 16));
b4.setForeground(Color.WHITE);
panel2.add(b5);
b5.setBackground(Color.BLACK);
b5.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b6);
b5.setForeground(Color.WHITE);
b6.setBackground(Color.white);
b6.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b7);
b7.setBackground(Color.BLACK);
b7.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b8);
b7.setForeground(Color.WHITE);
b8.setBackground(Color.white);
b8.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b9);
b9.setBackground(Color.white);
b9.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b10);
b10.setBackground(Color.BLACK);
b10.setFont(new Font("Sans Serif", Font.BOLD, 16));
b10.setForeground(Color.WHITE);
panel2.add(b11);
b11.setBackground(Color.white);
b11.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b12);
b12.setBackground(Color.BLACK);
b12.setFont(new Font("Sans Serif", Font.BOLD, 16));
b12.setForeground(Color.WHITE);
panel2.add(b13);
b13.setBackground(Color.BLACK);
b13.setFont(new Font("Sans Serif", Font.BOLD, 16));
b13.setForeground(Color.WHITE);
panel2.add(b14);
b14.setBackground(Color.white);
b14.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b15);
b15.setBackground(Color.BLACK);
b15.setFont(new Font("Sans Serif", Font.BOLD, 16));
b15.setForeground(Color.WHITE);
panel2.add(b16);
b16.setBackground(Color.white);
b16.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel1.add(new JTextField(20));
panel2.setLayout(gl);
c.add(panel1,BorderLayout.NORTH);
c.add(panel2,BorderLayout.CENTER);
c. setVisible(true);
}
}
编辑:有条件,因为这是我的 java 实验室。
- 计算器的尺寸为 250 x 250 像素。
- 计算器按钮的背景色和前景色必须以棋盘格图案交替,如上所示。您可以选择任意一对颜色作为前景色和背景色。
- 按钮之间应至少有 5 个 space 像素。
- 按钮上的文字应为 SanSerif 字号 16 且为粗体。
- 您的应用程序应在单个 class 中实现。 class 的主要方法只是创建 class 的 object。 class 的构造函数创建并显示 GUI。如果需要,构造函数可以调用 class 的其他方法。
- class 必须从 JFrame 继承,如下所示:
public myGUI 扩展 JFrame { ... }
extends 关键字指定继承。在 class 中,由于继承,您可以直接访问 JFrame class 的方法,而无需指定 object。所以当你想在框架中添加一些东西时,只需说
添加(一些组件);
您可以在构造函数中指定 window 的标题,只需将以下行添加为构造函数中的第一行即可。
super(“你的标题 window!”);
首先,您 class 的名字应该以大写字母 Calculator
开头,您可以执行以下操作:
Implement the constructor of your class like you did.
Write a method that takes all the code you have on your main and make some changes like in the code below:
public void init() {
//Don't instantiate your class here
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
GridLayout gl = new GridLayout(4,4,5,5);
JButton b1 = new JButton("7");
JButton b2 = new JButton("8");
JButton b3 = new JButton("9");
JButton b4 = new JButton("/");
JButton b5 = new JButton("4");
JButton b6 = new JButton("5");
JButton b7 = new JButton("6");
JButton b8 = new JButton("*");
JButton b9 = new JButton("1");
JButton b10 = new JButton("2");
JButton b11 = new JButton("3");
JButton b12 = new JButton("-");
JButton b13 = new JButton("0");
JButton b14 = new JButton(".");
JButton b15 = new JButton("=");
JButton b16 = new JButton("+");
panel2.add(b1);
b1.setBackground(Color.white);
b1.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b2);
b2.setBackground(Color.BLACK);
b2.setFont(new Font("Sans Serif", Font.BOLD, 16));
b2.setForeground(Color.WHITE);
panel2.add(b3);
b3.setBackground(Color.white);
b3.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b4);
b4.setBackground(Color.BLACK);
b4.setFont(new Font("Sans Serif", Font.BOLD, 16));
b4.setForeground(Color.WHITE);
panel2.add(b5);
b5.setBackground(Color.BLACK);
b5.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b6);
b5.setForeground(Color.WHITE);
b6.setBackground(Color.white);
b6.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b7);
b7.setBackground(Color.BLACK);
b7.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b8);
b7.setForeground(Color.WHITE);
b8.setBackground(Color.white);
b8.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b9);
b9.setBackground(Color.white);
b9.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b10);
b10.setBackground(Color.BLACK);
b10.setFont(new Font("Sans Serif", Font.BOLD, 16));
b10.setForeground(Color.WHITE);
panel2.add(b11);
b11.setBackground(Color.white);
b11.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b12);
b12.setBackground(Color.BLACK);
b12.setFont(new Font("Sans Serif", Font.BOLD, 16));
b12.setForeground(Color.WHITE);
panel2.add(b13);
b13.setBackground(Color.BLACK);
b13.setFont(new Font("Sans Serif", Font.BOLD, 16));
b13.setForeground(Color.WHITE);
panel2.add(b14);
b14.setBackground(Color.white);
b14.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b15);
b15.setBackground(Color.BLACK);
b15.setFont(new Font("Sans Serif", Font.BOLD, 16));
b15.setForeground(Color.WHITE);
panel2.add(b16);
b16.setBackground(Color.white);
b16.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel1.add(new JTextField(20));
panel2.setLayout(gl);
//Replace the c instance with the keyword this
this.add(panel1,BorderLayout.NORTH);
this.add(panel2,BorderLayout.CENTER);
this. setVisible(true);
}
And in your main do the following :
public static void main(String[] args) {
//Instantiate your class and the constructor code will be executed
Calculator c=new Calculator();
//Then call your implemented init() method
c.init();
}
它将按预期工作:
编辑:
参考您的编辑,只需将方法 init 的代码放入构造函数中,并在您的 main 中实例化您的 class,它将使用 this关键字。
public static void main(String[] args) {
Calculator c=new Calculator();
}
这只是计算器的显示。我想做的是将所有主要代码放入计算器方法中。只留下
new calculator();
作为主框架中正在创建的框架的object。 我试图将所有内容都向上移动,但我会收到一个我无法从 main 中理解的错误。有人介意帮帮我吗?
import java.awt.*;
import javax.swing.*;
public class calculator extends JFrame {
public calculator() {
super("Calculator");
setLayout(new BorderLayout());
setSize(new Dimension(250,250));
}
public static void main(String[] args) {
calculator c = new calculator();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
GridLayout gl = new GridLayout(4,4,5,5);
JButton b1 = new JButton("7");
JButton b2 = new JButton("8");
JButton b3 = new JButton("9");
JButton b4 = new JButton("/");
JButton b5 = new JButton("4");
JButton b6 = new JButton("5");
JButton b7 = new JButton("6");
JButton b8 = new JButton("*");
JButton b9 = new JButton("1");
JButton b10 = new JButton("2");
JButton b11 = new JButton("3");
JButton b12 = new JButton("-");
JButton b13 = new JButton("0");
JButton b14 = new JButton(".");
JButton b15 = new JButton("=");
JButton b16 = new JButton("+");
panel2.add(b1);
b1.setBackground(Color.white);
b1.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b2);
b2.setBackground(Color.BLACK);
b2.setFont(new Font("Sans Serif", Font.BOLD, 16));
b2.setForeground(Color.WHITE);
panel2.add(b3);
b3.setBackground(Color.white);
b3.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b4);
b4.setBackground(Color.BLACK);
b4.setFont(new Font("Sans Serif", Font.BOLD, 16));
b4.setForeground(Color.WHITE);
panel2.add(b5);
b5.setBackground(Color.BLACK);
b5.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b6);
b5.setForeground(Color.WHITE);
b6.setBackground(Color.white);
b6.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b7);
b7.setBackground(Color.BLACK);
b7.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b8);
b7.setForeground(Color.WHITE);
b8.setBackground(Color.white);
b8.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b9);
b9.setBackground(Color.white);
b9.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b10);
b10.setBackground(Color.BLACK);
b10.setFont(new Font("Sans Serif", Font.BOLD, 16));
b10.setForeground(Color.WHITE);
panel2.add(b11);
b11.setBackground(Color.white);
b11.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b12);
b12.setBackground(Color.BLACK);
b12.setFont(new Font("Sans Serif", Font.BOLD, 16));
b12.setForeground(Color.WHITE);
panel2.add(b13);
b13.setBackground(Color.BLACK);
b13.setFont(new Font("Sans Serif", Font.BOLD, 16));
b13.setForeground(Color.WHITE);
panel2.add(b14);
b14.setBackground(Color.white);
b14.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b15);
b15.setBackground(Color.BLACK);
b15.setFont(new Font("Sans Serif", Font.BOLD, 16));
b15.setForeground(Color.WHITE);
panel2.add(b16);
b16.setBackground(Color.white);
b16.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel1.add(new JTextField(20));
panel2.setLayout(gl);
c.add(panel1,BorderLayout.NORTH);
c.add(panel2,BorderLayout.CENTER);
c. setVisible(true);
}
}
编辑:有条件,因为这是我的 java 实验室。
- 计算器的尺寸为 250 x 250 像素。
- 计算器按钮的背景色和前景色必须以棋盘格图案交替,如上所示。您可以选择任意一对颜色作为前景色和背景色。
- 按钮之间应至少有 5 个 space 像素。
- 按钮上的文字应为 SanSerif 字号 16 且为粗体。
- 您的应用程序应在单个 class 中实现。 class 的主要方法只是创建 class 的 object。 class 的构造函数创建并显示 GUI。如果需要,构造函数可以调用 class 的其他方法。
- class 必须从 JFrame 继承,如下所示: public myGUI 扩展 JFrame { ... } extends 关键字指定继承。在 class 中,由于继承,您可以直接访问 JFrame class 的方法,而无需指定 object。所以当你想在框架中添加一些东西时,只需说 添加(一些组件); 您可以在构造函数中指定 window 的标题,只需将以下行添加为构造函数中的第一行即可。 super(“你的标题 window!”);
首先,您 class 的名字应该以大写字母 Calculator
开头,您可以执行以下操作:
Implement the constructor of your class like you did.
Write a method that takes all the code you have on your main and make some changes like in the code below:
public void init() {
//Don't instantiate your class here
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
GridLayout gl = new GridLayout(4,4,5,5);
JButton b1 = new JButton("7");
JButton b2 = new JButton("8");
JButton b3 = new JButton("9");
JButton b4 = new JButton("/");
JButton b5 = new JButton("4");
JButton b6 = new JButton("5");
JButton b7 = new JButton("6");
JButton b8 = new JButton("*");
JButton b9 = new JButton("1");
JButton b10 = new JButton("2");
JButton b11 = new JButton("3");
JButton b12 = new JButton("-");
JButton b13 = new JButton("0");
JButton b14 = new JButton(".");
JButton b15 = new JButton("=");
JButton b16 = new JButton("+");
panel2.add(b1);
b1.setBackground(Color.white);
b1.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b2);
b2.setBackground(Color.BLACK);
b2.setFont(new Font("Sans Serif", Font.BOLD, 16));
b2.setForeground(Color.WHITE);
panel2.add(b3);
b3.setBackground(Color.white);
b3.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b4);
b4.setBackground(Color.BLACK);
b4.setFont(new Font("Sans Serif", Font.BOLD, 16));
b4.setForeground(Color.WHITE);
panel2.add(b5);
b5.setBackground(Color.BLACK);
b5.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b6);
b5.setForeground(Color.WHITE);
b6.setBackground(Color.white);
b6.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b7);
b7.setBackground(Color.BLACK);
b7.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b8);
b7.setForeground(Color.WHITE);
b8.setBackground(Color.white);
b8.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b9);
b9.setBackground(Color.white);
b9.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b10);
b10.setBackground(Color.BLACK);
b10.setFont(new Font("Sans Serif", Font.BOLD, 16));
b10.setForeground(Color.WHITE);
panel2.add(b11);
b11.setBackground(Color.white);
b11.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b12);
b12.setBackground(Color.BLACK);
b12.setFont(new Font("Sans Serif", Font.BOLD, 16));
b12.setForeground(Color.WHITE);
panel2.add(b13);
b13.setBackground(Color.BLACK);
b13.setFont(new Font("Sans Serif", Font.BOLD, 16));
b13.setForeground(Color.WHITE);
panel2.add(b14);
b14.setBackground(Color.white);
b14.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel2.add(b15);
b15.setBackground(Color.BLACK);
b15.setFont(new Font("Sans Serif", Font.BOLD, 16));
b15.setForeground(Color.WHITE);
panel2.add(b16);
b16.setBackground(Color.white);
b16.setFont(new Font("Sans Serif", Font.BOLD, 16));
panel1.add(new JTextField(20));
panel2.setLayout(gl);
//Replace the c instance with the keyword this
this.add(panel1,BorderLayout.NORTH);
this.add(panel2,BorderLayout.CENTER);
this. setVisible(true);
}
And in your main do the following :
public static void main(String[] args) {
//Instantiate your class and the constructor code will be executed
Calculator c=new Calculator();
//Then call your implemented init() method
c.init();
}
它将按预期工作:
编辑:
参考您的编辑,只需将方法 init 的代码放入构造函数中,并在您的 main 中实例化您的 class,它将使用 this关键字。
public static void main(String[] args) {
Calculator c=new Calculator();
}