为什么我将一个JComboBox添加到一个JPanel中后,所有JPanel均未呈现

问题描述 投票:0回答:1

[当JComboBoxcmbox未添加到JPanel时,可以呈现两个面板,即p1p2。您可以注释掉组合框部分以查看结果。但是,当我将组合框添加到其中一个面板中之后,所有面板均未渲染。

我的代码如下:

import java.awt.*;
import javax.swing.*;

public class TestCombo {

    public static void main(String[] args) {
        JFrame frame = new JFrame("康樂彩歌");
        frame.setVisible(true);
        frame.setBounds(0, 0, 1368, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel p1 = new JPanel();
        p1.setBackground(Color.CYAN);

        JRadioButton rb1 = new JRadioButton("加簡譜", false);
        rb1.setFont(new Font("新細明體", Font.PLAIN, 20));

        JRadioButton rb2 = new JRadioButton("加人聲", false);
        rb2.setFont(new Font("新細明體", Font.PLAIN, 20));

        rb1.setBounds(450, 180, 50, 50);
        rb2.setBounds(500, 180, 50, 50);

        JButton btPlay = new JButton("PLAY");
        btPlay.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 25));
        btPlay.setBounds(100, 20, 100, 20);//x axis, y axis, width, height  

        JButton btStop = new JButton("STOP");
        btStop.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 25));
        btStop.setBounds(140, 20, 100, 20);//x axis, y axis, width, height 

        //p1.add(cmbox);
        p1.add(rb1);
        p1.add(rb2);
        p1.add(btPlay);
        p1.add(btStop);
        p1.setBorder(BorderFactory.createLineBorder(Color.black));

        JPanel p2 = new JPanel();
        p2.setBackground(Color.PINK);
        p2.setBorder(BorderFactory.createLineBorder(Color.red));

        JComboBox cmbox = new JComboBox();  //The JComboBox to be added to a JPanel
        cmbox.setFont(new Font("新細明體", Font.PLAIN, 20));
        cmbox.addItem("紫竹調");
        cmbox.addItem("走一同去郊遊");
        cmbox.addItem("大野狼");
        cmbox.addItem("歸來吧蘇連多");
        cmbox.addItem("追尋");
        cmbox.addItem("三輪車");
        cmbox.addItem("我家門前有小河");
        cmbox.addItem("漁家樂");
        cmbox.addItem("嚕啦啦");
        cmbox.addItem("踏雪尋梅");

        p2.add(cmbox);

        frame.add(p1, BorderLayout.PAGE_START);
        frame.add(p2, BorderLayout.CENTER);
    }
}
java swing jpanel jcombobox
1个回答
0
投票

实施建议的更改可以解决问题。

enter image description here

import java.awt.*;
import javax.swing.*;

public class TestCombo {

    public static void main(String[] args) {
        JFrame frame = new JFrame("康樂彩歌");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel p1 = new JPanel();
        p1.setBackground(Color.CYAN);

        JRadioButton rb1 = new JRadioButton("加簡譜", false);
        rb1.setFont(new Font("新細明體", Font.PLAIN, 20));

        JRadioButton rb2 = new JRadioButton("加人聲", false);
        rb2.setFont(new Font("新細明體", Font.PLAIN, 20));

        JButton btPlay = new JButton("PLAY");
        btPlay.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 25));

        JButton btStop = new JButton("STOP");
        btStop.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 25));

        p1.add(rb1);
        p1.add(rb2);
        p1.add(btPlay);
        p1.add(btStop);
        p1.setBorder(BorderFactory.createLineBorder(Color.black));

        JPanel p2 = new JPanel();
        p2.setBackground(Color.PINK);
        p2.setBorder(BorderFactory.createLineBorder(Color.red));

        JComboBox cmbox = new JComboBox();  //The JComboBox to be added to a JPanel
        cmbox.setFont(new Font("新細明體", Font.PLAIN, 20));
        cmbox.addItem("紫竹調");
        cmbox.addItem("走一同去郊遊");
        cmbox.addItem("大野狼");
        cmbox.addItem("歸來吧蘇連多");
        cmbox.addItem("追尋");
        cmbox.addItem("三輪車");
        cmbox.addItem("我家門前有小河");
        cmbox.addItem("漁家樂");
        cmbox.addItem("嚕啦啦");
        cmbox.addItem("踏雪尋梅");

        p2.add(cmbox);

        frame.add(p1, BorderLayout.PAGE_START);
        frame.add(p2, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.