[的Java Swing] 的JComboBox在Java中 – 的JComboBox在Java中
内容
如何创建一个JComboBox,
获取事件JComboBox的
JComboBox可一个对象可以让你选择一个元素上的箭头,当点击. 例如,我们有一个 的JFrame 从以下的JComboBox选择标志:
现在,我们将创建一个JFrame的JComboBox像学习.
如何创建一个JComboBox,
要创建JComboBox中,我们使用下面的构造函数:
– 的JComboBox(): 创建无数据的JComboBox
– 的JComboBox(ComboBoxModel中AMODEL): 创建模型的JComboBox与指定
– 的JComboBox(和[] 项目): 与阵列元件E创建的JComboBox
– 的JComboBox(矢量项目): 在矢量E中的元素创建的JComboBox
程序将创建类似下面的第一篇文章的JFrame. 它包含一个主面板 的JPanel. 此放置在主面板 BorderLayout的 和含有水的JComboBox选择PAGE_START, 的JLabel 选定的国家的国旗显示设置为CENTER. 在所使用的代码 2 String数组arrFlag命名与名字和arrCountry国家标志来显示该国在JComboBox的名字.
package nguyenvanquan7826.JComboBox; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class MyJComboBox extends JFrame { private JComboBox<String> cbbCountry; private JLabel lbShow; private String[] arrFlag = { "vn", "china", "us", "lao", "en" }; private String[] arrCountry = { "Việt Nam", "Trung Quốc", "Mỹ", "Lào", "Anh" }; public MyJComboBox() { // add main panel to JFrame add(createMainPanel()); // set Display setTitle("JComboBox"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setLocationRelativeTo(null); setVisible(true); } // create main panel with BorderLayout private JPanel createMainPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(new EmptyBorder(10, 10, 10, 10)); // add a JComboBox to top of main panel panel.add(cbbCountry = createComboBox(arrCountry), BorderLayout.PAGE_START); // get flag name with country is selected in JComboBox String flag = arrFlag[cbbCountry.getSelectedIndex()]; // add JLabel to show flag panel.add(lbShow = createLabel(flag), BorderLayout.CENTER); return panel; } // create a JComboBox with list item in ArrayList private JComboBox<String> createComboBox(String[] arrItem) { JComboBox<String> cbb = new JComboBox<String>(arrItem); return cbb; } // create JLabel to show flag with private JLabel createLabel(String flagName) { JLabel lb = new JLabel(getFlag(flagName)); return lb; } // get flag with name is flagName private ImageIcon getFlag(String flagName) { ImageIcon flag = new ImageIcon(getClass().getResource( "/nguyenvanquan7826/JComboBox/" + flagName + ".png")); return flag; } public static void main(String[] args) { new MyJComboBox(); } }
JComboBox的初始化时的默认, 如果在它的任何元件时,第一元件被选择. 要确定哪些元件被选择,我们可以使用该方法 getSelectedIndex() (取位置元素被选中) 或 获得当选项目() (取元件被选择) 这取决于如何和不同的目的. 你有没有注意到拍照时,有必要按照路径您的影像修订, 他的照片放在一起包用java文件*. (下载照片这里)
你有没有注意到,在上面的代码没有捕获的事件在其他国家选择的元素的JComboBox,选择标志时,并没有改变.
获取事件JComboBox的
为了能够在JComboBox中选择元素时,我们需要赶上事件 addActionListener方法 町的JComboBox. 同时我们要 implemets接口的ActionListener 和压倒一切的方法 为actionPerformed(ActionEvent的ê). 然后,我们将比较的方法来识别和处理的影响的JComboBox. 我们有完整的代码如下:
package nguyenvanquan7826.JComboBox; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class MyJComboBox extends JFrame implements ActionListener { private JComboBox<String> cbbCountry; private JLabel lbShow; private String[] arrFlag = { "vn", "china", "us", "lao", "en" }; private String[] arrCountry = { "Việt Nam", "Trung Quốc", "Mỹ", "Lào", "Anh" }; public MyJComboBox() { // add main panel to JFrame add(createMainPanel()); // set Display setTitle("JComboBox"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setLocationRelativeTo(null); setVisible(true); } // create main panel with BorderLayout private JPanel createMainPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(new EmptyBorder(10, 10, 10, 10)); // add a JComboBox to top of main panel panel.add(cbbCountry = createComboBox(arrCountry), BorderLayout.PAGE_START); // get flag name with country is selected in JComboBox String flag = arrFlag[cbbCountry.getSelectedIndex()]; // add JLabel to show flag panel.add(lbShow = createLabel(flag), BorderLayout.CENTER); return panel; } // create a JComboBox with list item in ArrayList private JComboBox<String> createComboBox(String[] arrItem) { JComboBox<String> cbb = new JComboBox<String>(arrItem); cbb.addActionListener(this); return cbb; } // create JLabel to show flag with private JLabel createLabel(String flagName) { JLabel lb = new JLabel(getFlag(flagName)); return lb; } // get flag with name is flagName private ImageIcon getFlag(String flagName) { ImageIcon flag = new ImageIcon(getClass().getResource( "/nguyenvanquan7826/JComboBox/" + flagName + ".png")); return flag; } // change flag when select items in JComboBox private void changeFlag() { lbShow.setIcon(getFlag(arrFlag[cbbCountry.getSelectedIndex()])); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == cbbCountry) { changeFlag(); } } public static void main(String[] args) { new MyJComboBox(); } }
阅读更多: JComboBox的类, 使用的JComboBox
私人的ImageIcon getFlag(字符串flagName) {
ImageIcon的标志=新的ImageIcon(的getClass().的getResource(
“/nguyenvanquan7826 / JComboBox中/” + flagName + “.PNG”));
返回标志;
}
我用这个功能,有问题.
当我修改为:
私人的ImageIcon getFlag(字符串flagName){
ImageIcon的图标=新的ImageIcon(“/家用/ manhduy /台式机/” + flagName + “.PNG”);
返回图标;
}
它运行良好.
我查看任何问题,K是否?
我把这个路径在我的机器.
2 上述路径是不同的你. 你看上面的正确路径.
对流浪儿童的警察他, 但是当我跑我仍然得到我的路.
修复完成.