Java gui 当我把它放在它自己的方法中时没有显示


import javax.swing.*;
import java.awt.event.*;
import java.awt.GridLayout;
public class Calculator1{
    public void Calculator1(){
        JFrame frame = new JFrame("Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        GridLayout grid = new GridLayout(4, 3, 10, 10);
        frame.setLayout(grid);
        JLabel op1Label= new JLabel("Operand One:");
        JTextField operandOne = new JTextField();
        operandOne.setText("");
        operandOne.setEditable(true);
        frame.add(op1Label);
        frame.add(operandOne);
        JLabel op2Label = new JLabel("Operand Two:");
        JTextField operandTwo = new JTextField();
        operandTwo.setText("");
        operandTwo.setEditable(true);
        frame.add(op2Label);
        frame.add(operandTwo);
        JButton plus = new JButton("+");
        frame.add(plus);
        JButton minus = new JButton("-");
        frame.add(minus);
        JButton multiply = new JButton("*");
        frame.add(multiply);
        JButton divide = new JButton("/");
        frame.add(divide);
        JButton exponent = new JButton("^");
        frame.add(exponent);
        JButton route = new JButton("u221A");
        frame.add(route);
        JButton increment = new JButton("Increment");
        frame.add(increment);
        JButton decrement = new JButton("Decrement");
        frame.add(decrement);
        JButton reciprocal = new JButton("Reciprocal");
        frame.add(reciprocal);
        JLabel resultLabel= new JLabel("Result:");
        JTextField result = new JTextField();
        result.setText("0");
        result.setEditable(false);
        frame.add(resultLabel);
        frame.add(result);
        frame.pack();
        frame.setVisible(true);
    }

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

我真的很陌生于Java,并试图编写计算器。在我得到要显示的东西后,我将要做的动作侦听器,我让它们在主要的时候工作,所以它应该不会太难。当我将所有代码放入 main 时,它会显示,但是当我尝试将其放入自己的方法中时,程序会编译并运行,但除了 cmd 行之外什么都没有显示。有什么帮助吗?

问题是您正在调用构造函数(使用 new (,但您的 Calculator1 方法只是一个恰好与类同名的方法,但不是该类的构造函数,因此它使用默认构造函数。若要使其成为构造函数,请删除void返回值。

public Calculator1() { // without return value it's a constructor
    ...      
}
public static void main(String[] args) {
    Calculator1 calc = new Calculator1(); // call the constructor
}

要么使用类的构造函数,要么使用 calc。计算器1((。

更改公共空隙计算器1(( --->公共静态空隙计算器1((并在 main(( 中调用函数

public class Calculator1{
public static void Calculator1(){
    JFrame frame = new JFrame("Calculator");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    GridLayout grid = new GridLayout(4, 3, 10, 10);
    frame.setLayout(grid);
        JLabel op1Label= new JLabel("Operand One:");
        JTextField operandOne = new JTextField();
        operandOne.setText("");
        operandOne.setEditable(true);
        frame.add(op1Label);
        frame.add(operandOne);
        JLabel op2Label = new JLabel("Operand Two:");
        JTextField operandTwo = new JTextField();
        operandTwo.setText("");
        operandTwo.setEditable(true);
        frame.add(op2Label);
        frame.add(operandTwo);
                JButton plus = new JButton("+");
                frame.add(plus);
                JButton minus = new JButton("-");
                frame.add(minus);
                JButton multiply = new JButton("*");
                frame.add(multiply);
                JButton divide = new JButton("/");
                frame.add(divide);
                JButton exponent = new JButton("^");
                frame.add(exponent);
                JButton route = new JButton("u221A");
                frame.add(route);
                JButton increment = new JButton("Increment");
                frame.add(increment);
                JButton decrement = new JButton("Decrement");
                frame.add(decrement);
                JButton reciprocal = new JButton("Reciprocal");
                frame.add(reciprocal);
                JLabel resultLabel= new JLabel("Result:");
                JTextField result = new JTextField();
                result.setText("0");
                result.setEditable(false);
                frame.add(resultLabel);
                frame.add(result);
                frame.pack();
                frame.setVisible(true);
 }
 public static void main(String[] args) {
     Calculator1 calc = new Calculator1();
     Calculator1();
 }
 }

更改public void Calculator1(){ /* rest of the code */ }

作为public Calculator1(){ /* rest of the code */ }

最新更新