[英]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);
}
}
首先使用不同的布局管理器, FlowLayout
或GridBagLayout
可能會更好
JPanel centerPanel = new JPanel(new FlowLayout());
centerPanel.add(openReportSelection);
centerPanel.add(closeButton);
這些布局將遵循您的按鈕的首選大小
至於打開另一個窗口,嗯,你已經創建了一個,所以過程幾乎是一樣的。 話雖如此,您可能會考慮看一下使用多個 JFrames:好的還是壞的做法? 在你承諾自己之前。
更好的方法可能是使用JMenuBar
和JMenuItems
作為“打開”和“退出”操作。 看看如何使用菜單然后你可以使用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.