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() {
@Override
public 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() {
@Override
public 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();
}
}
1、Jlist是里面的内容是写成数组形式的,可以直接通过API获取值
2、 int getSelectedIndex() 获取的是单个选项
int[] getSelectedIndices(). 获取的一堆选项
Object getSelectedValue() 获取的是单个选项的值
Object[] getSelectedValues() 获取的是多个选项的值
3、将获取到的值对JTextFiled进行赋值的时候,JTextField设置成静态的