我试图创建一个简单的欢迎屏幕,用户可以选择他想要玩多少张记忆游戏的牌。在屏幕的顶部,我想要一个文本(我为此创建了一个JLabel)。在下面我想要一个下拉菜单,在这个下拉菜单的右边一个按钮。到目前为止,我运行的代码在运行时会显示任何内容(除了空的JFrame)。我做错了什么?
代码:
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Memory game");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocation(430, 100);
frame.setLayout(null);
JPanel panel = new JPanel();
frame.add(panel);
JLabel lbl = new JLabel("How many cards u want to play with?");
lbl.setVisible(true);
lbl.setLocation(150,150);
panel.add(lbl);
String[] choices = { "8","12", "16","20","24","28","32"};
final JComboBox<String> cb = new JComboBox<String>(choices);
cb.setVisible(true);
cb.setLocation(200,150);
panel.add(cb);
JButton btn = new JButton("Start game");
btn.setLocation(175,200);
panel.add(btn);
}
}
答案 0 :(得分:0)
您需要设置面板的大小。一种方法:
JPanel panel = new JPanel();
panel.setSize(frame.getSize());
frame.add(panel);
但是使用
frame.setLayout(null);
如果你不知道自己在做什么,会给你带来很多麻烦(如果你有布局,你就不会遇到这个问题)。你应该总是使用布局。看看官方 Visual Guide to Layout Managers。 虽然您可以从网上下载更多内容。
另一个建议是:如果您刚开始学习如何构建桌面应用程序,也许您应该跳过swing并直接进入JavaFX。这将为您节省更多头痛。