Swing 有关JList的问题

来源:互联网 发布:mac 抹除系统 重装 编辑:程序博客网 时间:2024/05/22 11:50

JList选中后,并将选中的内容返回到JTextField中去

package com.spasvo.performancerunner.analyzer.word;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.util.ArrayList;import java.util.List;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import com.spasvo.performancerunner.mainframe.gui.Manager_Config;public class FileSelection {private JFrame file = new JFrame();String[] reportList = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "报告1", "报告2","报告3", "报告4", "报告5", "报告6", "报告7", "报告8", "报告9", "报告10" };Object[] selectedReport = new Object[50];private JLabel label1 = new JLabel("报告名称:        ");private JList jlist = null;private JButton jbt1 = new JButton("确定");private JButton jbt2 = new JButton("取消");private JLabel label2 = new JLabel();private JPanel p1 = new JPanel();private JPanel p2 = new JPanel();private JPanel p3 = new JPanel();private StringBuffer s = new StringBuffer();private Object[] value =null;public Object[] getJlist() {String path = Manager_Config.getString("WorkspacePath") + "reports\\";System.out.println(path);// 读取所有场景File file = new File(path);if (!file.exists()) {System.out.println(path + " not exists");return null;}File fa[] = file.listFiles();List valueList = new ArrayList();for (int i = 0; i < fa.length; i++) {File fs = fa[i];if (fs.isDirectory()) {System.out.println(fs.getName());// comboBox.addItem(fs.getName());valueList.add(fs.getName());}}value =new String[valueList.size()];for (int i = 0; i < valueList.size(); i++) {value[i] = valueList.get(i);}return value;}public Object[] getFileSelection() {file.setTitle("报告选择");file.setSize(600, 400);file.setVisible(true);p1.setLayout(new BorderLayout());p3.setLayout(new FlowLayout(FlowLayout.LEADING));p3.add(label1);p1.add(p3, BorderLayout.WEST);value=getJlist();jlist=new JList(value);p1.add(new JScrollPane(jlist), BorderLayout.CENTER);p1.add(label2, BorderLayout.EAST);p1.setBorder(BorderFactory.createEtchedBorder());p2.setLayout(new FlowLayout(FlowLayout.RIGHT));p2.add(jbt1);p2.add(jbt2);file.setLayout(new BorderLayout());file.add(p1, BorderLayout.CENTER);file.add(p2, BorderLayout.SOUTH);jbt1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {file.setVisible(false);selectedReport = jlist.getSelectedValues();for (int i = 0; i < selectedReport.length; i++) {s.append(selectedReport[i]);s.append(";");}setText(s.toString());}});jbt2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {selectedReport = null;file.setVisible(false);}});return selectedReport;}public void setText(String str) {FlowLayoutDemo.sceneText.setText(str); //将sceneText设置成静态,这样我们在“确定”的单机事件中,
//我们即可对sceneText进行赋值 public static JTextField sceneText = null;}public static void main(String[] args) {FileSelection f = new FileSelection();f.getFileSelection();}}

 

1Jlist是里面的内容是写成数组形式的,可以直接通过API获取值

2int getSelectedIndex()获取的是单个选项

int[] getSelectedIndices(). 获取的一堆选项

Object getSelectedValue() 获取的是单个选项的值

Object[] getSelectedValues()  获取的是多个选项的值

3、将获取到的值对JTextFiled进行赋值的时候,JTextField设置成静态的