Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决';找不到符号';问题_Java_Cannot Find Symbol - Fatal编程技术网

Java 如何解决';找不到符号';问题

Java 如何解决';找不到符号';问题,java,cannot-find-symbol,Java,Cannot Find Symbol,如果我编译它,我会得到setDefaultCloseOperation、setSize和setVisible的“找不到符号”错误。我的问题是我不明白为什么。这是我家庭作业的一部分。但因为这个问题,我甚至不能开始下一部分 //AdderSubtracterFrame.java //This class displays a Frame which can add or subtract two numbers import javax.swing.JFrame; public class Adde

如果我编译它,我会得到setDefaultCloseOperation、setSize和setVisible的“找不到符号”错误。我的问题是我不明白为什么。这是我家庭作业的一部分。但因为这个问题,我甚至不能开始下一部分

//AdderSubtracterFrame.java
//This class displays a Frame which can add or subtract two numbers
import javax.swing.JFrame;
public class AdderSubtracterProgram
{
    public static void main(String [] args)
    {
        AdderSubtracterFrame frame1 = new AdderSubtracterFrame("Adder and Subtracter");

        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.setSize(400,100);
        frame1.setVisible(true);
    }
}
我添加了两个类在同一个项目中的AdderSubtracterFrame代码。这个项目是做一个计算器

//AdderSubtracterFrame.java
//This class displays a Frame which can add or subtract two numbers

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JPanel;

import java.awt.GridLayout;
import java.awt.FlowLayout;

public class AdderSubtracterFrame
{
    private JTextField num1TextField;
    private JTextField num2TextField;
    private JTextField resultTextField;

    private JButton clearButton;
    private JButton addButton;
    private JButton subtractButton;
    private JButton buttonPanel;

    //Constructor
    public AdderSubtracterFrame(String title)
    {
        //Set the title of the AdderSubtracterFrame by
        //using the superclass JFrame constructor
        super();

        //Set the JFrame to be a 2*2 Grid
        //Set a gap of 5pixels between each row and column.
        setLayout(new GridLayout(2,2,5,5));

        //Create and instance of the components appearing in the 2*2 grid
        num1TextField = new JTextField("0",5);//Begin with 0
        num2TextField = new JTextField("0",5);//Begin with 0
        resultTextField = new JTextField((5));//Begin empty
        buttonPanel = getButtonPanel();

        //Add components to 2*2 Grid
        add(num1TextField);
        add(num2TextField);
        add(resultTextField);
        add(buttonPanel);
    }

    //Create and return a panel containing the buttons
    private JPanel getButtonPanel()
    {
        JPanel myPanel = new JPanel();
        myPanel.setLayout(new FlowLayout());

        //Create an instance of each button
        addButton = new JButton("+");
        subtractButton = new JButton("-");
        clearButton = new JButton("CLEAR");

        //Add the 3button to myPanel
        myPanel.add(addButton);
        myPanel.add(subtractButton);
        myPanel.add(clearButton);

        return myPanel;

    }
}

主要问题是,
AdderSubtracterFrame
没有扩展
JFrame
。因此,您不能使用像
setVisible()
这样的
JFrame
功能

像这样声明您的
AdderSubtracterFrame
以修复:

public class AdderSubtracterFrame extends JFrame {
我还发现了其他一些东西:

  • 在构造函数中调用
    super()
    ,但不传递标题。更改为
    super(标题)
  • 不要在Java Swing GUI中使用固定大小。使用布局管理器(与您一样)并在框架上调用
    pack()
    ,根据框架内的组件布局框架
  • JavaSwingGUI应该在事件调度线程(EDT)上运行。看

Make
AdderSubtracterFrame
extend
JFrame
,您只需从

公共类AdderSubtracterFrame{

公共类AdderSubtracterFrame扩展了JFrame{

您需要向我们展示
AdderSubtracterFrame
的代码。它是否扩展了
JFrame
?天哪,我解决了这个问题。我不敢相信它会这么简单。谢谢!不用担心。如果这解决了您的问题,请确保。