使用JList和ArrayList的Java Swing<&燃气轮机;
基本上,我有一个CD库,它保存CD ArrayList的实例,然后我有一个people ArrayList,它可以“借用”CD。。。从该CD添加到可用或不可用列表使用JList和ArrayList的Java Swing<&燃气轮机;,java,swing,arraylist,jlist,Java,Swing,Arraylist,Jlist,基本上,我有一个CD库,它保存CD ArrayList的实例,然后我有一个people ArrayList,它可以“借用”CD。。。从该CD添加到可用或不可用列表 public CDStore(String storeNme) { storeName = storeNme; discsArray = new ArrayList<CD>(); peopleArray = new ArrayList<Person>();
public CDStore(String storeNme) {
storeName = storeNme;
discsArray = new ArrayList<CD>();
peopleArray = new ArrayList<Person>();
}
谢谢。如果您有一个检索CD名称的方法,我们就称它为getCDName(), 你可以试试
String[] entries = new String[discsArray.length];
int index = 0;
for (CD cd: discsArray) {
entries[index++] = cd.getCDName();
}
这将填充您的entries数组。如果您有一个检索CD名称的方法,我们将其称为getCDName(), 你可以试试
String[] entries = new String[discsArray.length];
int index = 0;
for (CD cd: discsArray) {
entries[index++] = cd.getCDName();
}
这将填充您的条目数组。您的
CDStore
可以实现该接口。然后,您可以将CDStore
用作JList
的模型
CDStore store = new CDStore("Store");
// add some CDs
JList listOfCD = new JList(store);
listOfCD.setVisibleRowCount(4);
JScrollPane listPane = new JScrollPane(listOfCD);
JTextField valueField = new JTextField("None", 7);
下面是CDStore实现ListModel
的示例实现。每次discsArray
更改时,您应该调用方法fireContentsChanged
public class CDStore implements ListModel {
private String storeName;
private List<CD> discsArray;
private List<Person> peopleArray;
public CDStore(String storeNme) {
storeName = storeNme;
discsArray = new ArrayList<CD>();
peopleArray = new ArrayList<Person>();
}
//your methods
//ListModel
private List<ListDataListener> listener = new ArrayList<ListDataListener>();
public void addListDataListener(ListDataListener l) {
listener.add(l);
}
public void removeListDataListener(ListDataListener l) {
listener.remove(l);
}
protected void fireContentsChanged() {
for (ListDataListener l : listener) {
l.contentsChanged(new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, discsArray.size()-1));
}
}
public Object getElementAt(int index) {
return discsArray.get(index);
}
public int getSize() {
return discsArray.size()
}
}
公共类CDStore实现ListModel{
私有字符串storeName;
私有列表光盘;
私有列表peopleArray;
公共CDStore(字符串存储NME){
storeName=storeNme;
discsArray=newarraylist();
peopleArray=newArrayList();
}
//你的方法
//列表模型
私有列表侦听器=新的ArrayList();
public void addListDataListener(ListDataListener l){
添加(l);
}
公共void removeListDataListener(ListDataListener l){
删除(l);
}
受保护的无效fireContentsChanged(){
for(ListDataListener l:listener){
l、 contentsChanged(新的ListDataEvent(此,ListDataEvent.CONTENTS_已更改,0,discsArray.size()-1));
}
}
公共对象getElementAt(int索引){
返回discsArray.get(索引);
}
公共int getSize(){
返回discsArray.size()
}
}
您的CDStore
可以实现该接口。然后,您可以将CDStore
用作JList
的模型
CDStore store = new CDStore("Store");
// add some CDs
JList listOfCD = new JList(store);
listOfCD.setVisibleRowCount(4);
JScrollPane listPane = new JScrollPane(listOfCD);
JTextField valueField = new JTextField("None", 7);
下面是CDStore实现ListModel
的示例实现。每次discsArray
更改时,您应该调用方法fireContentsChanged
public class CDStore implements ListModel {
private String storeName;
private List<CD> discsArray;
private List<Person> peopleArray;
public CDStore(String storeNme) {
storeName = storeNme;
discsArray = new ArrayList<CD>();
peopleArray = new ArrayList<Person>();
}
//your methods
//ListModel
private List<ListDataListener> listener = new ArrayList<ListDataListener>();
public void addListDataListener(ListDataListener l) {
listener.add(l);
}
public void removeListDataListener(ListDataListener l) {
listener.remove(l);
}
protected void fireContentsChanged() {
for (ListDataListener l : listener) {
l.contentsChanged(new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, discsArray.size()-1));
}
}
public Object getElementAt(int index) {
return discsArray.get(index);
}
public int getSize() {
return discsArray.size()
}
}
公共类CDStore实现ListModel{
私有字符串storeName;
私有列表光盘;
私有列表peopleArray;
公共CDStore(字符串存储NME){
storeName=storeNme;
discsArray=newarraylist();
peopleArray=newArrayList();
}
//你的方法
//列表模型
私有列表侦听器=新的ArrayList();
public void addListDataListener(ListDataListener l){
添加(l);
}
公共void removeListDataListener(ListDataListener l){
删除(l);
}
受保护的无效fireContentsChanged(){
for(ListDataListener l:listener){
l、 contentsChanged(新的ListDataEvent(此,ListDataEvent.CONTENTS_已更改,0,discsArray.size()-1));
}
}
公共对象getElementAt(int索引){
返回discsArray.get(索引);
}
公共int getSize(){
返回discsArray.size()
}
}
尝试了您所说的,但我们正在从另一个类调用discsArray。。。但无论出于何种原因,它都不允许我使用discsArray并要求我创建方法等。是否有任何方法可以解决此问题?尝试了您所说的,但我们从另一个类调用discsArray。。。但无论出于什么原因,它都不允许我使用光盘,并要求我创建方法,等等。有没有办法解决这个问题?你只是想得到列表中显示的CD的名称吗?基本上,是的。。。只是想让discsArray的元素成为元素的中心你只是想得到列表中显示的CD的名称吗?基本上,是的。。。只需要将DISSCORE的元素作为元素条目+ 1也考虑扩展<代码>抽象ListMase<代码>,以利用现有方法的一些实现。+ 1还考虑扩展<代码> ActudiistListMys<代码>以充分利用现有方法的一些实现。