为什么 jcombobox 不可见?

Hem*_*S R 2 java swing

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Dummy{
    String newSelection = null;

    public void init(){
        JFrame jFrame = new JFrame("Something");
        jFrame.setVisible(true);
        jFrame.setSize(new Dimension(600, 600));
        jFrame.setLayout(null);
        jFrame.setBackground(Color.BLACK);

        final String[] possibleNoOfPlayers = {"Two","Three"};

        final JComboBox comboBox = new JComboBox(possibleNoOfPlayers);
        newSelection = possibleNoOfPlayers[0];
        comboBox.setPreferredSize(new Dimension(200,130));
        comboBox.setLocation(new Point(200,200));
        comboBox.setEditable(true);
        comboBox.setSelectedIndex(0);
        comboBox.setVisible(true);
        comboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                JComboBox box = (JComboBox) actionEvent.getSource();
                newSelection = (String) box.getSelectedItem();
                System.out.println(newSelection);
            }
        });
        jFrame.add(comboBox);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将组合框添加到框架中。但它是不可见的。如果您单击该位置,它将显示选项。但它是不可见的。如果我遗漏了一些内容,请告诉我。

Mad*_*mer 5

三件事...

  1. setVisible在添加框架之前您已经调用了它
  2. 您正在使用null布局
  3. 您尚未设置 comobox 的大小,这意味着它将(有效)渲染为0x0大小。(ps-setPreferredSize没有做你认为应该做的事)...

建议的解决方案...

最后调用setVisible并使用适当的布局管理器