如何为JList和DefaultListModel制作setter和getters? (Java)
问题描述:
我正在编写一个程序,它使用几个自定义的jpanels
实质上构成一个Word键盘。这个jpanels
应该允许用户从颜色选择器中选择一种颜色并将其从jlist
中添加或移除。为了让使用jpanels
的窗口能够从jpanels
获得数据,我被指示为我的DefaultListModel和jlist
制作setter和getters。我不知道如何用这些类型来做到这一点。我看过参数化ArrayLists的setter和getters的例子,看起来很有前途,但我仍然不明白如何将它应用到listModel和jlist
。如何为JList和DefaultListModel制作setter和getters? (Java)
private ArrayList<String> stringlist = new ArrayList<String>();
public ArrayList<String> getStringList() {
return stringlist;
}
public setStringList(ArrayList<String> list) {
stringlist = list
}
答
选中此项。如果我们有一个JList
和DefaultListModel
JList listvariable= new JList();
DefaultListModel model= new DefaultListModel<>();
现在,这些都为相同的getter和setter方法:
public DefaultListModel getModel() {
return model;
}
public void setModel(DefaultListModel model) {
this.model = model;
}
public JList getListvariable() {
return listvariable;
}
public void setListvariable(JList listvariable) {
this.listvariable = listvariable;
}
答
为了得到一个JList的选定值,应该遵循以下步骤:
- 创建扩展的JFrame并实现ActionListener接口的类。
- 创建一个对象数组。这些将是JList的值。
- 用上面的数组创建一个新的JList。
- 创建一个新的JButton。将ActionListener添加到按钮并覆盖actionPerformed方法。现在每次用户按下按钮时,此方法都会启动。
- 调用getSelectedIndex获取JList中所选项目的索引。
- 调用getSelectedValue方法获取JList中所选项目的值。
+0
我不得不做出的ActionListener在一个单独的类。这个类只应该有JList和DefaultListModel面板。所以我需要的getters和setters调用整个JList和DefaultListModel(不只是选定的索引)。 – Brooklyn
Ohhhh,好的。因此,假设你在构造函数中声明了模型和JList,并且getter和setter在构造函数之外(但是在同一个类中),那么如何让这些方法可以访问列表和模型?如果类正在扩展JPanel,你认为我真的需要一个构造函数吗? @bhavna garg – Brooklyn
您可以看到getter方法将这些组件作为参数,setter方法返回这些组件。这些方法因此可以自动访问这些组件。并且您不需要基于这些方法的基本目的。 @布鲁克林 –
好的,我明白那一部分。但是,例如,getModel必须返回一个在该方法之外声明的对象(模型)。如果模型已经在构造函数中声明了怎么办? getModel方法将如何访问它? – Brooklyn