JFRAME,JPANEL。使按钮和下拉菜单可见,并在正确的位置

时间:2017-06-03 09:23:13

标签: java swing jframe

我试图创建一个简单的欢迎屏幕,用户可以选择他想要玩多少张记忆游戏的牌。在屏幕的顶部,我想要一个文本(我为此创建了一个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);

        }

}

1 个答案:

答案 0 :(得分:0)

您需要设置面板​​的大小。一种方法:

    JPanel panel = new JPanel();
    panel.setSize(frame.getSize());
    frame.add(panel);

但是使用

frame.setLayout(null);

如果你不知道自己在做什么,会给你带来很多麻烦(如果你有布局,你就不会遇到这个问题)。你应该总是使用布局。看看官方 Visual Guide to Layout Managers。 虽然您可以从网上下载更多内容。

另一个建议是:如果您刚开始学习如何构建桌面应用程序,也许您应该跳过swing并直接进入JavaFX。这将为您节省更多头痛。