Swing 有关JList的问题

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();
	}
}

 

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

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

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

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

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

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值