Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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_Swing_User Interface - Fatal编程技术网

Java 文本字段、标签和按钮

Java 文本字段、标签和按钮,java,swing,user-interface,Java,Swing,User Interface,我在理解GUI以及为什么我的程序不能正常运行方面遇到了一些困难。是因为我必须扩展到JFrame类吗?下面是一个代码: import java.awt.event.ActionEvent; import java.awt.event.ActionListner; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import jav

我在理解GUI以及为什么我的程序不能正常运行方面遇到了一些困难。是因为我必须扩展到JFrame类吗?下面是一个代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Lab_10
{
    public static void main (String[] args)
    {
        final double EARTHQUAKE_RATE= 8.0;

        final int FRAME_WIDTH= 300;
        final int FRAME_HEIGHT= 200;
        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setTitle("Richter Scale");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true); 

        JFrame frame = new JFrame();
        JLabel label = new JLabel();
        JPanel panel = new JPanel();
        panel.add(button);
        panel.add(label);
        panel.add(rictherfield);
        panel.add(rictherlabel);
        add(panel);

        JLabel rictherlabel = new JLabel ("Ricther: ");

        final int FIELD_WIDTH = 10;
        JTextField rictherField = new JTextField(FIELD_WIDTH);
        richterField.setText("" + EARTHQUAKE_RATE);

        JButton button = new JButton("Enter");

        ActionListner listner = new AddLabelListener();
        button.addActionListner(listner);

        class AddLabelListener implements ActionListener
        {
            public void actionPerformed(ActionEvent event)
            {
                label.setText("Most structures fall");
            }
        }
    }
}
我收到很多错误,说明程序找不到我的ActionListeners等的符号

错误包括:

  _10.java:2: error: cannot find symbol
    import java.awt.event.ActionListner;
                         ^
      symbol:   class ActionListner
      location: package java.awt.event
    Lab_10.java:17: error: cannot find symbol
    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
    ^
      symbol:   variable frame
      location: class Lab_10
    Lab_10.java:18: error: cannot find symbol
    frame.setTitle("Richter Scale");
    ^
      symbol:   variable frame
      location: class Lab_10
    Lab_10.java:19: error: cannot find symbol
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ^
      symbol:   variable frame
      location: class Lab_10
    Lab_10.java:20: error: cannot find symbol
    frame.setVisible(true); 
    ^
      symbol:   variable frame
      location: class Lab_10
    Lab_10.java:30: error: cannot find symbol
    panel.add(button);
              ^
      symbol:   variable button
      location: class Lab_10
    Lab_10.java:32: error: cannot find symbol
    panel.add(rictherfield);
              ^
      symbol:   variable rictherfield
      location: class Lab_10
    Lab_10.java:33: error: cannot find symbol
    panel.add(rictherlabel);
              ^
      symbol:   variable rictherlabel
      location: class Lab_10
    Lab_10.java:34: error: cannot find symbol
    add(panel);
    ^
      symbol:   method add(JPanel)
      location: class Lab_10
    Lab_10.java:40: error: cannot find symbol
    richterField.setText("" + EARTHQUAKE_RATE);
    ^
      symbol:   variable richterField
      location: class Lab_10
    Lab_10.java:45: error: cannot find symbol
    ActionListner listner = new AddLabelListener();
    ^
      symbol:   class ActionListner
      location: class Lab_10
    Lab_10.java:45: error: cannot find symbol
    ActionListner listner = new AddLabelListener();
                                ^
      symbol:   class AddLabelListener
      location: class Lab_10
    Lab_10.java:49: error: cannot find symbol
    class AddLabelListener implements ActionListener
                                      ^
      symbol:   class ActionListener
      location: class Lab_10
    Lab_10.java:53: error: local variable label is accessed from within inner class; needs to be declared final
    label.setText("Most structures fall");
问题1:

 frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
 frame.setTitle("Richter Scale");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true); 

 JFrame frame = new JFrame();
您正在尝试使用尚未创建的对象。帧对象是在稍后的时间点创建的。应如下所示:

 JFrame frame = new JFrame();
 frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
 frame.setTitle("Richter Scale");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true); 
问题2:

同样的问题在代码的后面。 兄弟,首先你需要声明一个对象,然后只有你才能使用它并在上面实现函数。如果不首先声明对象,编译器将如何解析它并将其视为有效变量

 panel.add(button);
 panel.add(label);
 panel.add(rictherfield);
 panel.add(rictherlabel);
 add(panel);

 JLabel rictherlabel = new JLabel ("Ricther: ");

 final int FIELD_WIDTH = 10;
 JTextField rictherField = new JTextField(FIELD_WIDTH);
 richterField.setText("" + EARTHQUAKE_RATE);


 JButton button = new JButton("Enter");
“按钮”、“richterlabel”和“richterField”在声明之前使用。由于编译器在执行时不知道dese变量的含义,所以会抛出“找不到符号”的语句

首先声明它们,然后使用它们。希望你明白了

问题3:

import java.awt.event.ActionListner;
ActionListner不是事件包中的类。应该是:

import java.awt.event.ActionListener;
寻找其他问题,同时开始解决这个问题。

哇。。。首先,ActionListener被错误地拼写为ActionListner。仔细检查这些单词的拼写。简单的印刷错误会产生语法错误

剩下的问题归结为一个非常简单的警告:秩序很重要。您的订单应如下所示:

1申报和创建对象; 2声明并创建所有依赖对象; 3配置对象; 4操纵物体

这意味着您的代码:

frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Richter Scale");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

JFrame frame = new JFrame(); 
无法工作,因为您试图弄乱尚未创建的框架。首先创建它,如下所示:

JFrame frame = new JFrame();

frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Richter Scale");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
标签和按钮也是如此

JLabel rictherlabel = new JLabel ("Ricther: ");
需要提前来

panel.add(label);

请粘贴您收到的特定错误。很抱歉,这些是我的错误errors@SameerSawla不,您不应该扩展JFrame,尤其是不要让编译错误消失。在向类添加功能时可以扩展类。不,它们仍然存在。import java.awt.event.ActionListner;-你打错了。您缺少侦听器中的e。