您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第18章:图形界面】_列表框:JList
发布时间:2021-01-18 15:53:29编辑:雪饮阅读()
列表框的实现
使用javax.swing.Jlist类可以实例化列表框
import javax.swing.JFrame ;
import javax.swing.JList ;
import java.util.Vector ;
import javax.swing.BorderFactory ;
import javax.swing.ListSelectionModel ;
import javax.swing.JScrollPane ;
import java.awt.Container ;
import java.awt.GridLayout ;
class MyList{
private JFrame frame = new JFrame("Welcome To kasumi") ;
private Container cont = frame.getContentPane() ;
private JList list1 = null ;
private JList list2 = null ;
public MyList(){
this.frame.setLayout(new GridLayout(1,3)) ;
String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
Vector<String> v = new Vector<String>() ;
v.add("kasumi") ;
v.add("snowDrink") ;
v.add("ayane") ;
this.list1 = new JList(nations) ;
this.list2 = new JList(v) ;
this.list1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
this.list2.setBorder(BorderFactory.createTitledBorder("你最喜欢的角色?")) ;
this.list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) ;// 多选
this.list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) ;// 单选
this.cont.add(new JScrollPane(this.list1)) ;
this.cont.add(this.list2) ;
this.frame.setSize(330,180) ;
this.frame.setVisible(true) ;
}
}
public class Hello{
public static void main(String args[]) throws Exception{
new MyList() ;
}
};
![列表框](/d/file/xuewuzhijing/xindebiji/febc2c2bf303ad96dac01f3469570ab2.png)
关于选择模式:
使用 ListSelectionModel.SINGLE_SELECTION ,您只需选择一行即可。
使用 ListSelectionModel.SINGLE_INTERVAL_SELECTION ,您可以选择多个行,这些行位于一个块中,即只能选择连续行(用shift加鼠标左键) (例如,您可以选择第1行,但不能选择第1-3行和第4-6行)
使用ListSelectionModel.MULTIPLE_INTERVAL_SELECTION可以选择多个行并且这多个行可以不在同一个块,比如你可以选项第一行和第三行,即可以选择不连续行(用ctrl+鼠标左键)
用javax.swing.AbstractListModel类实现列表框
继承抽象类javax.swing.AbstractListModel并重写getElementAt与getSize方法也可以实现列表框
import javax.swing.JFrame ;
import javax.swing.JList ;
import javax.swing.BorderFactory ;
import javax.swing.ListSelectionModel ;
import javax.swing.JScrollPane ;
import javax.swing.AbstractListModel ;
import java.awt.Container ;
import java.awt.GridLayout ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
class MyListModel extends AbstractListModel{
private String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
public Object getElementAt(int index){
if(index<this.nations.length){
return this.nations[index] ;
}else{
return null ;
}
}
public int getSize(){
return this.nations.length ;
}
}
class MyList{
private JFrame frame = new JFrame("Welcome To kasumi") ;
private Container cont = frame.getContentPane() ;
private JList list1 = new JList(new MyListModel()) ;
public MyList(){
this.frame.setLayout(new GridLayout(1,3)) ;
this.list1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
this.list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) ;
this.cont.add(new JScrollPane(this.list1)) ;
this.frame.setSize(330,180) ;
this.frame.setVisible(true) ;
}
}
public class Hello{
public static void main(String args[]) throws Exception{
new MyList() ;
}
};
![列表框](/d/file/xuewuzhijing/xindebiji/5f97fb934edaa6471b4900076f3da78f.png)
列表框选择事件的监听
实现javax.swing.event.ListSelectionListener接口的valueChanged方法可以获取列表框中列表项的选择事件
import javax.swing.JFrame ;
import javax.swing.JList ;
import javax.swing.BorderFactory ;
import javax.swing.ListSelectionModel ;
import javax.swing.JScrollPane ;
import javax.swing.AbstractListModel ;
import java.awt.Container ;
import java.awt.GridLayout ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import javax.swing.event.ListSelectionListener ;
import javax.swing.event.ListSelectionEvent ;
class MyListModel extends AbstractListModel{
private String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
public Object getElementAt(int index){
if(index<this.nations.length){
return this.nations[index] ;
}else{
return null ;
}
}
public int getSize(){
return this.nations.length ;
}
}
class MyList implements ListSelectionListener{
private JFrame frame = new JFrame("Welcome To MLDN") ;
private Container cont = frame.getContentPane() ;
private JList list1 = null ;
public MyList(){
this.frame.setLayout(new GridLayout(1,3)) ;
String nations[] = {"中国","巴西","美国","韩国","意大利","法国"} ;
this.list1 = new JList(new MyListModel()) ;
this.list1.setBorder(BorderFactory.createTitledBorder("你喜欢去那个国家旅游?")) ;
this.list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) ;// 多选
this.cont.add(new JScrollPane(this.list1)) ;
this.frame.setSize(330,180) ;
this.frame.setVisible(true) ;
this.list1.addListSelectionListener(this) ;
}
public void valueChanged(ListSelectionEvent e){ // 事件处理
int temp[] = list1.getSelectedIndices() ;
System.out.print("选定的内容:") ;
for(int i=0;i<temp.length;i++){
System.out.print(list1.getModel().getElementAt(i) + "、") ;
}
System.out.println() ;
}
}
public class Hello{
public static void main(String args[]) throws Exception{
new MyList() ;
}
};
![列表框](/d/file/xuewuzhijing/xindebiji/977fd2e0ae03b3509a2158c14b9a0ece.png)
关键字词:java,JList,列表框