自学电脑游戏第四天(Swing)

继续之前的

3.组合框(JComboBox)

例题:利用JComboBox设计一个选择城市的程序。

import java.awt.*;

import javax.swing.*;

public class JComboBoxExample extends JFrame{
    //定义两个组合框
    JComboBox comboBox1,comboBox2;
    //设置一个字符数组
    String cityNames[]={"北京","天津","上海","南京","重庆","武汉","杭州"};
    //创建构造方法
    public JComboBoxExample(){
        //引用父类
        super("组合框");
        Container container=getContentPane();
        container.setLayout(new FlowLayout());
        //创建一个具有数组定义列表内容的组合框
        comboBox1=new JComboBox(cityNames);
        //设置默认选项为第4个选项,因为在数组中第一个字符为cityNames[0]
        comboBox1.setSelectedIndex(3);
        //设置选项不可用,这里的不可用是不能编辑的意思,不是禁用
        comboBox1.setEditable(false);
        comboBox2=new JComboBox(cityNames);
        comboBox2.setSelectedItem(cityNames[1]);
        comboBox2.addItem(new String("长沙"));//在组合框中添加选择长沙
        comboBox2.setEditable(true);
        container.add(comboBox1);
        container.add(comboBox2);
        //调整窗口大小
        pack();
        setVisible(true);
        
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JComboBoxExample jcbe=new JComboBoxExample();
        jcbe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

运行结果:

自学电脑游戏第四天(Swing)

 打开下拉框:

自学电脑游戏第四天(Swing)

 打开另一个下拉框:

自学电脑游戏第四天(Swing)

然后讨论一下comboBox1.setEditable(false);这个的用法,有人觉得写true或者false没有区别,其实还是有的,当这个地方是false时:

自学电脑游戏第四天(Swing)

 我们可以看出它的底部颜色为白色,之前是蓝色的。还有如何让他禁用不能做任何操作呢,经过我的研究,使用comboBox1.enable(false)就可以实现了,记住括号里必须是false,如果不是的话,那么执行结果就和comboBox1.setEditable(false)没什么区别了。

这是运行的结果:

自学电脑游戏第四天(Swing)

 南京这个下拉框完全动不了。

好了,今天就到这了,很开心能和大家一起分享学习经验。

相关推荐