JFrame显示为空并最小化

时间:2014-07-07 18:56:12

标签: java swing user-interface jframe

我正在尝试编写一个由一个JComboBox组成的小型GUI程序,该程序必须使用从组合框中选择的颜色绘制ContentPane

我不知道为什么它没有像预期的那样工作。当我启动main方法时,即使没有comboBox也会生成一个空的JFrame,我知道我已经添加到了JFrame中。

这是我的主要方法:

import javax.swing.JFrame;
public class TestRGBComboBox {
public static void main(String[] args) {
    JFrame frame = new RgbComboBoxFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
}

这是我的JFrame类

public class RgbComboBoxFrame extends JFrame{
   private static final int FRAME_WIDTH = 300;
   private static final int FRAME_HEIGHT = 300;
   private JComboBox colorComboBox;
   private ActionListener listener;

public void RgbComboBoxFrame() {

    colorComboBox = new JComboBox();
    colorComboBox.addItem("RED");
    colorComboBox.addItem("GREEN");
    colorComboBox.addItem("BLUE");
    colorComboBox.setEditable(true);
    listener = new AddListener();
    paintContentPane();
    createPanel();
    setSize(FRAME_WIDTH,FRAME_HEIGHT);
}
class AddListener implements ActionListener{
    public void actionPerformed(ActionEvent event){
        paintContentPane();
    }
}

private void paintContentPane(){
    Color c = (Color)colorComboBox.getSelectedItem();

    getContentPane().setBackground(c);
}
private void createPanel(){
    JPanel controlPanel = new JPanel();
    colorComboBox.addActionListener(listener);
    controlPanel.add(colorComboBox);
    add(controlPanel,BorderLayout.SOUTH);
}
}

1 个答案:

答案 0 :(得分:1)

尽管所有代码都是为了创建面板并向其添加内容,但您永远不会调用它们。 public void RgbComboBoxFrame(){}应该是构造函数,因此写为public RgbComboBoxFrame(){}