0

我想用 Java 创建一个简单的二十一点 GUI。我知道创建 JLabel、JPanel 等的基础知识。但是,我找不到我的 JLabel 没有显示在屏幕上的原因。这是我的代码:

        //Create and set up the window.
        JFrame frame = new JFrame("BlackJack");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //new border panel
        JPanel gui = new JPanel(new BorderLayout(2,2));

        //create players panel
        JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel2.setPreferredSize(new Dimension(600, 200));
        panel2.setBackground(Color.ORANGE);
        gui.add(panel2, BorderLayout.CENTER);


        //Display the window.
        frame.pack();
        frame.setVisible(true);
        frame.setTitle("BlackJack!");


        //add players name
        String name = JOptionPane.showInputDialog(null, "Name?");
        JLabel playerName = new JLabel(name);
        playerName.setPreferredSize(new Dimension(100, 40));
        playerName.setFont(new Font("sansserif", Font.BOLD, 18));
        panel2.add(playerName);

当我点击编译时,我得到的是一个名称对话框?然后是一个空面板。我不明白为什么我的 JLabel 不在面板中,因为我已将它添加到我的框架中。我错过了什么吗?

4

2 回答 2

4
if(nloop != 1 || nloop != 2){

这是一个重言式

对于每个数字——它不能同时是 1 和 2——所以条件(nloop != 1 || nloop != 2)总是产生true

也许你想要&&而不是||


while loop:while(run2 = true){有气味,正如评论中所指出的(尽管它似乎不是问题中所述的问题)。

于 2012-11-26T19:29:55.413 回答
0

你需要改变

if(nloop != 1 || nloop != 2){

if(nloop != 1 && nloop != 2){

想想看。如果输入 1,则原始 if 条件检查 1 是否不等于 1 或 1 是否不等于 2。1 显然是 != 2,因此会执行错误的输入代码。

相反,您希望您的错误输入代码仅在输入不是 1 且不是 2 时运行。

于 2012-11-26T19:30:04.503 回答