簡體   English   中英

Eclipse 項目不會運行

[英]Eclipse project wont run

我是 eclipse 和 java 的新手,我正在嘗試使用按鈕在兩個面板之間切換。 我想測試我的項目,但是當我嘗試運行它時,它啟動了,沒有給出任何錯誤,然后什么也沒有發生。

我是否錯過了在進行此運行之前需要做的事情?

這是我擁有的版本,我今天早些時候下載了它。

面向 Java 開發人員的 Eclipse IDE

版本:2019-09 R (4.13.0) 內部版本號: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);


    }
}

首先使用不同的布局管理器, FlowLayoutGridBagLayout可能會更好

JPanel centerPanel = new JPanel(new FlowLayout());
centerPanel.add(openReportSelection);     
centerPanel.add(closeButton); 

這些布局將遵循您的按鈕的首選大小

至於打開另一個窗口,嗯,你已經創建了一個,所以過程幾乎是一樣的。 話雖如此,您可能會考慮看一下使用多個 JFrames:好的還是壞的做法? 在你承諾自己之前。

更好的方法可能是使用JMenuBarJMenuItems作為“打開”和“退出”操作。 看看如何使用菜單然后你可以使用CardLayout在視圖之間切換,例如

從純粹的設計角度來看(我知道這只是實踐,但熟能生巧),我不會從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。 在此處進行了更多討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM