【问题标题】: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?

【问题讨论】:

  • 请编辑您的问题,在minimal reproducible example 中包含您描述的问题。
  • 您可以在两个 UI 类之间共享一个或多个类。

标签: 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);
      

      比修改类中的其他组合框。 对不起各位,如果太混乱我会理解的

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-15
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        相关资源
        最近更新 更多