【问题标题】:How do I use a JFrame class as main class?如何使用 JFrame 类作为主类?
【发布时间】:2018-06-02 02:43:26
【问题描述】:

我正在尝试构建一个计算器。

我使用 Swing 插件(容器和控件)开发了界面,但是当我尝试运行我的程序时,它说包需要一个主类。

已经尝试创建一个主类并调用 Calc() JFrame 类,但没有成功。

看一下代码:

public class Calc extends javax.swing.JPanel {
    public Calc() {
        initComponents();
    }
}

【问题讨论】:

  • 你的public static void main(String[] args)在哪里?此外,您说“调用 Calc() JFrame 类”,但在您发布的代码中 CalcJPanel,而不是 JFrame
  • 哪里可以写psvm?
  • 几乎在任何地方,但我会把它放在扩展或创建 JFrame 的类中。
  • @csmckelvey,不要扩展 JFame。您没有更改框架的功能。推荐的方法是创建一个 JPanel 并将面板添加到您在 main() 方法中创建的框架的实例中。看看我提供的教程链接。它显示了可以复制和编译的完整代码。
  • 不知道OP是否在改变框架的功能。

标签: java swing class jframe main


【解决方案1】:

你需要一个 main() 方法来执行你的类。

查看 How to Make Frames 上的 Swing 教程中的 FrameDemo 示例代码,以获取入门的基本示例。

/* FrameDemo.java requires no other files. */
public class FrameDemo {

/**
 * Create the GUI and show it.  For thread safety,
 * this method should be invoked from the
 * event-dispatching thread.
 */
private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("FrameDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel emptyLabel = new JLabel("");
    emptyLabel.setPreferredSize(new Dimension(175, 100));
    frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
  }
}

【讨论】:

  • 请添加main+invokeLater; FrameDemo 有点啰嗦。虽然那个演示应用非常有用。
  • 编辑了问题。
  • 我不知道发生了什么。我是 Java Swing 的新手,我正在使用一个自动生成所有界面代码的插件,所以你只需处理按钮、标签等的位置和逻辑。
  • 这就是问题所在。不要使用 IDE 生成代码,因为您不知道代码的作用。您已获得 Swing 教程的链接。它将向您展示如何为每个 Swing 组件编写基本代码。仅使用 IDE 来帮助编译和调试代码。
猜你喜欢
  • 2014-05-23
  • 1970-01-01
  • 2013-12-18
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多