【问题标题】:JFrame Eclipse 'add' command errorJFrame Eclipse“添加”命令错误
【发布时间】:2018-08-28 12:34:30
【问题描述】:

在尝试添加写有“点击我”的按钮时,我收到以下错误消息:

线程“main”java.lang.Error 中的异常:未解决的编译 问题:无法对非静态方法进行静态引用 从容器类型添加(组件)

import javax.swing.JButton;
import javax.swing.JFrame;
public class FirstFrame extends JFrame {

    public static void main(String[] args) {
        JFrame frame = new JFrame("My little frame");
        JButton button = new JButton("Click Me");
        add(button);
        frame.setSize(300,200);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

任何解决此错误的帮助将不胜感激!

【问题讨论】:

  • 从计算机的角度来看,它不知道你想add 做什么。大概是您尝试添加的名为frame 的JFrame,因此代码应为frame.add(button);

标签: java eclipse swing add


【解决方案1】:

add() 方法是一个实例方法,只能在(在这种情况下)框架的实例上调用。

试试

frame.add(button);

【讨论】:

  • 将组件添加到 JFrame 的正确方法是将其添加到其 contentPane 中。所以,frame.getContentPane().add(button)
  • @GeorgeZougianos,因为 jdk 5(我认为)如果您将组件添加到框架,它将将该组件添加到框架的内容窗格中。那就是 add() 作为一种方便的方法被转发到内容窗格。无需先使用 getContentPane()。
  • @George Zougianos,我不熟悉这个类的细节......我只是在评论方法的实例/类范围,所以我尊重你的知识。我只添加此评论,因此原始提问者不会被我的回答误导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多