Java Eclipse项目无法运行

Java Eclipse项目无法运行,java,eclipse,swing,button,panel,Java,Eclipse,Swing,Button,Panel,我是eclipse和java新手,我尝试使用一个按钮在两个面板之间切换。我想测试我的项目,但当我尝试运行它时,它会启动,不会出现错误,然后什么也不会发生 我是否错过了跑步前需要做的事情 这是我今天早些时候下载的版本 面向Java开发人员的Eclipse IDE 版本:2019-09 R(4.13.0) 构建id:20190917-1200 下面是我的代码,如果有任何东西阻止它在那里工作 import java.awt.EventQueue; import javax.swing.JFrame;

我是eclipse和java新手,我尝试使用一个按钮在两个面板之间切换。我想测试我的项目,但当我尝试运行它时,它会启动,不会出现错误,然后什么也不会发生

我是否错过了跑步前需要做的事情

这是我今天早些时候下载的版本

面向Java开发人员的Eclipse IDE

版本:2019-09 R(4.13.0) 构建id:20190917-1200

下面是我的代码,如果有任何东西阻止它在那里工作

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Music_Test {

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Music_Test window = new Music_Test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Music_Test() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JPanel Menu = new JPanel();
        Menu.setBounds(6, 6, 438, 266);
        frame.getContentPane().add(Menu);
        Menu.setLayout(null);
        Menu.setVisible(true);

        JPanel Select_Level = new JPanel();
        Select_Level.setBounds(6, 6, 438, 266);
        frame.getContentPane().add(Select_Level);
        Select_Level.setVisible(false);

        JButton btnSelectLevel = new JButton("Select Level");
        btnSelectLevel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Menu.setVisible(false);
                Select_Level.setVisible(true);
            }
        });
        btnSelectLevel.setBounds(158, 45, 117, 29);
        Menu.add(btnSelectLevel);

        JLabel lblMenu = new JLabel("Menu");
        lblMenu.setFont(new Font("Comic Sans MS", Font.BOLD, 22));
        lblMenu.setBounds(187, 17, 61, 29);
        Menu.add(lblMenu);

        JLabel lblSelectLevel = new JLabel("Select Level");
        lblSelectLevel.setFont(new Font("Comic Sans MS", Font.BOLD, 22));
        lblSelectLevel.setBounds(187, 17, 61, 29);
        Select_Level.add(lblSelectLevel);


    }
}

从使用不同的布局管理器开始,
FlowLayout
gridbagloayout
可能工作得更好

JPanel centerPanel = new JPanel(new FlowLayout());
centerPanel.add(openReportSelection);     
centerPanel.add(closeButton); 
这些布局将符合您按钮的首选尺寸

至于打开另一个窗口,您已经创建了一个窗口,所以过程基本相同。话虽如此,你也可以考虑在自己承诺之前再看一看。

更好的方法可能是使用
JMenuBar
JMenuItems
作为“打开”和“退出”操作。例如,看一看,您可以使用在视图之间切换

从纯粹的设计角度来看(我知道这只是实践,但完美的实践造就完美),我不会从
JFrame
扩展任何东西,而是依赖于围绕
JPanel
之类的东西构建主GUI

这为您提供了决定如何使用这些组件的灵活性,因为您可以将它们添加到框架、小程序或其他组件中

尽管您已经按照
ActionListener
接口实现了
actionPerformed
方法,但是您的类不是那种类型,因为您还没有实现接口。一旦实现了该接口并将其注册到
JButton
btnAdd

btnAdd.addActionListener(this);
将调用该方法

更紧凑的替代方案可能是使用匿名接口:

btnAdd.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
      // handle button ActionEvent & display dialog...    
   }
});
旁注:

在应用程序中使用多个JFrame会产生大量开销 用于管理帧之间可能需要存在的更新。这个 首选的方法是在需要另一个窗口时使用模态JDialog 必修的。这是更多讨论


你是怎么运作的?您是否有多个监视器(检查是否在那里打开),因为您的代码为我运行。我只需单击屏幕顶部的run按钮,然后在屏幕顶部的菜单中使用run>run,这意味着@Marv?我确认它在Eclipse IDE上按预期工作。只需右键单击文件>运行方式>Java应用程序。顺便说一下,您可以通过检查控制台视图来检查应用程序是否已启动:它应该在顶部显示
Music\u Test[Java应用程序]
。感谢您的反馈,我会记下。但目前我无法测试它,因为它无法运行,这是我的问题