首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从一个对象中创建一个用列填充的组合框?(Java)

如何从一个对象中创建一个用列填充的组合框?(Java)
EN

Stack Overflow用户
提问于 2019-06-04 23:31:20
回答 1查看 24关注 0票数 0

我有一个名为“书”的对象,其中有标题、作者、bookID等列。在Microsoft SQL Server上创建。一切都与Netbeans相连,工作正常。我也有过滤/搜索选项,它也工作得很好,但我想有一个组合框充满图书列,如标题,作者等,我想选择一个列,并只在其中搜索。

我已经有一个名为BookComboBoxModelclass,它返回books (下面的代码),但是我需要该表中的book列,而不是comboBox上的Book.toString()方法

代码语言:javascript
复制
//this is my book combo model that returns books into combobox

public class BookComboBoxModel extends AbstractListModel<Book> implements ComboBoxModel<Book> {

    private List <Book> data;
    private Book selectedItem;


    public BookComboBoxModel(List<Book> data) {
        this.data = data;
    }

    public BookComboBoxModel() {
    }

    public void add(List<Book> data) {
        this.data = data;
    }

    @Override
    public int getSize() {
        return data.size();
    }

    @Override
    public Book getElementAt(int index) {
        return data.get(index);
    }

    @Override
    public void setSelectedItem(Object anItem) {
        selectedItem = (Book) anItem;
    }

    @Override
    public Object getSelectedItem() {
        return selectedItem;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-04 23:40:46

您可以创建对象(客户)的array,然后将其传递给combobox,如下所示:combo = new JComboBox(customers);

请看下面的示例:

代码语言:javascript
复制
import java.awt.BorderLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main extends JFrame {
  JLabel label;
  JComboBox combo;
  public static void main(String args[]) {
    new Main();
  }

  public Main() {
    label = new JLabel("Select a Customer");
    add(label, BorderLayout.NORTH);

    Customer customers[] = new Customer[6];
    customers[0] = new Customer("A", 1);
    customers[1] = new Customer("B", 6);
    customers[2] = new Customer("C", 2);
    customers[3] = new Customer("D", 3);
    customers[4] = new Customer("E", 4);
    customers[5] = new Customer("F", 5);

    combo = new JComboBox(customers);
    combo.addItemListener(e -> {
      Customer c = (Customer) e.getItem();
      label.setText("You selected customer id: " + c.getId());
    });
    JPanel panel = new JPanel();
    panel.add(combo);
    add(panel, BorderLayout.CENTER);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 200);
    setVisible(true);
  }
}

class Customer {
  private String name;
  private int id;

  public Customer(String name, int id) {
    this.name = name;
    this.id = id;
  }

  public String toString() {
    return getName();
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56447024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档