【问题标题】:Use the same JComboBox from one class to another Java Swing从一个类到另一个 Java Swing 使用相同的 JComboBox
【发布时间】:2017-06-02 16:27:28
【问题描述】:
我有 2 节课。我想在每个班级有 2 个相同的 JComboBox。
我在第一堂课中成功地做到了,因为我的 JComboBox 中的值与 JList 中的值相同,填充了来自文本字段的文本。
但我无法在其他课程中获得相同的结果!
我的第一堂课摘录:
DefaultComboBoxModel Ajout = new DefaultComboBoxModel();
btnValidate.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
String newCategorie = textCreerCategorie.getText();
Ajout.addElement(newCategorie);
list.setModel(Ajout);
myComboB.setModel(Ajout);
原来如此!如何在我的其他类中拥有相同的 JComboBox 并在其中使用我的 JList?
【问题讨论】:
标签:
java
swing
class
combobox
【解决方案1】:
你遇到了什么错误?
为什么你不能在你的第二堂课中实例化一个新的 JComboBox ?提供更多详细信息,以便我们为您提供帮助!
首先。您是否在第二堂课中导入了正确的库,以便可以使用 JComboBox ? (即 javax.swing.*;)
尝试在您的第二个类中创建一个 JComboBox 的新实例并使用它。如果您想使用在第一堂课中实例化的 Ajout JComboBox,请先尝试将其设为 Global,然后在第二堂课中使用。
我的回答再次基于假设。如果我们能看到更多你的代码,那真的很有帮助! :)
【解决方案2】:
您可以使用自己的 ComboBoxModel 类来做到这一点:
class MyComboBoxModel extends DefaultComboBoxModel<Job> {
public MyComboBoxModel(Job[] items) {
super(items);
}
@Override
public Job getSelectedItem() {
Job selectedJob = (Job) super.getSelectedItem();
// do something with this job before returning...
return selectedJob;
}
}
然后当您使用此模型在任何地方创建JComboBox 时。
MyComboBoxModel myModel = new MyComboBoxModel(jobs);
JComboBox<Job> jobList = new JComboBox<Job>(myModel);
【解决方案3】:
感谢大家的回答。更具体地说,它是一个购物清单,我有两个类,一个是主窗口,您可以在其中选择类别和产品并显示在列表中。
另一个是用于管理您的类别和产品的窗口,因此当创建类别时(从 jtext 字段并添加到我的 jlist),我希望它将其添加到主窗口中的 ComboBox 中。我希望你们能理解我(这里的法国女孩)。
在修改类中:
DefaultComboBoxModel Ajout = new DefaultComboBoxModel();
btnValiderCategorie.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
String newCategorie = textCreerCategorie.getText();
Ajout.addElement(newCategorie);
list.setModel(Ajout);
ajouterACategorie.setModel(Ajout);
这允许我在我的 jlist 和修改窗口中的组合框中同时添加一个新类别。
然后我想在主窗口中有相同的组合框,以便用户可以选择他在其他类中创建的类别。
主类做了很多其他的事情,但我全神贯注于在这个组合框中产生相同的效果
JComboBox<String> categories_content = new JComboBox<String>();
categories_content.setBounds(140, 63, 157, 30);
比修改类中的其他组合框。
对不起各位,如果太混乱我会理解的