java jlist 更新_更新Java Swing JList

我使用WindowBuilder Pro来生成下面的GuiTest类中的大部分代码,除了添加(或改变)的右侧的''行外。 WindowBuilder Pro(一种所见即所得)不断向构造函数中添加代码 - 但还没有投诉我进行修改。我想以这种方式继续使用WindowBuilder Pro进行构建,因此我不想对GUI的一般体系结构进行更改。

我还在下面创建了一个DataTest类来模拟收集数据集的某个缓慢过程。

这是我的问题:

我想要做的是用DataTest类中的新数据更新JList。

GuiTest类别:

import java.awt.BorderLayout;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.ListSelectionModel;

import javax.swing.border.EmptyBorder;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener; ///

import javax.swing.JList;

import javax.swing.JLabel;

import discoverTool.DataTest;

public class GuiTest extends JFrame implements ListSelectionListener{

private String[] foo = {"thing1","thing2","thing3"}; //

private JPanel contentPane;

private JLabel lblNewLabel; //made global

/**

* Launch the application.

* @throws InterruptedException

*/

public static void main(String[] args) throws InterruptedException {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

GuiTest frame = new GuiTest();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

DataTest dt = new DataTest();/

GuiTest gt = new GuiTest();

gt.foo = dt.foo;

gt.updateJList(dt.foo);

}

public void updateJList(String[] f){

//reset the list with f

}

/**

* Create the frame.

*/

public GuiTest() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

JList list = new JList(foo);

list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); /

list.setSelectedIndex(0); //

list.addListSelectionListener(this); //

list.setBounds(10, 11, 134, 240);

contentPane.add(list);

JPanel panel = new JPanel();

panel.setBounds(154, 11, 188, 81);

contentPane.add(panel);

panel.setLayout(null);

//JLabel lblNewLabel = new JLabel("New label");/

lblNewLabel = new JLabel("New label");///

lblNewLabel.setBounds(10, 11, 46, 14);

panel.add(lblNewLabel);

}

public void valueChanged(ListSelectionEvent e) {///

JList jList = (JList)e.getSource();

lblNewLabel.setText( foo[jList.getSelectedIndex()] );///

}///

}DataTest类:

public class DataTest {

public String[] foo;

public DataTest() throws InterruptedException{

//simulate a long process getting data;

Thread.sleep(7000);

foo = new String[4];

foo[0]="hey";

foo[1]="hi";

foo[2]="bye";

foo[3]="adios";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值