java list动态更改_java Swing中如何动态更改JList对象的值并显示

import java.awt.EventQueue;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.util.ArrayList;

import java.util.LinkedList;

import javax.swing.JFrame;

import javax.swing.filechooser.FileNameExtensionFilter;

import javazoom.jl.decoder.JavaLayerException;

import javazoom.jl.player.Player;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JProgressBar;

import javax.swing.event.ChangeListener;

import javax.swing.JList;

import javax.swing.JPanel;

import java.awt.Color;

public class MusicPlayerFrame_Test implements ActionListener{

private JFrame frame;

JButton button = null;

JButton button_1 = null;

JButton button_2 = null;

JProgressBar progressBar = null;

JFileChooser chooser = null;

JList list = null;

JPanel panel = null;

File[] files = null;

FileInputStream fis = null; //读取文件内容

BufferedInputStream bis = null; //缓存字节流

ArrayList music_ArrayList = new ArrayList();

String[] music_List = new String[music_ArrayList.size()];

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

MusicPlayerFrame_Test window = new MusicPlayerFrame_Test();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the application.

*/

public MusicPlayerFrame_Test() {

initialize();

}

/**

* Initialize the contents of the frame.

*/

private void initialize() {

frame = new JFrame();

frame.setBounds(100, 100, 450, 300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(null);

button_1 = new JButton("\u9009\u62E9\u6B4C\u66F2");

button_1.setBounds(165, 147, 93, 23);

frame.getContentPane().add(button_1);

button_2 = new JButton("\u64AD\u653E/\u6682\u505C");

button_2.setBounds(165, 200, 93, 23);

frame.getContentPane().add(button_2);

progressBar = new JProgressBar();

progressBar.setBounds(10, 237, 414, 14);

frame.getContentPane().add(progressBar);

list = new JList(music_List);

list.setBounds(129, 32, 1, 1);

panel = new JPanel();

panel.setBackground(Color.WHITE);

panel.add(list);

panel.setBounds(161, 23, 97, 114);

frame.getContentPane().add(panel);

button_1.addActionListener(this);

button_2.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

new Thread(new Runnable(){

@Override

public void run() {

// TODO Auto-generated method stub

if(e.getSource() == button_1){

chooseMusic();

list = new JList(music_List);

panel.repaint();

}

if(e.getSource() == button_2){

}

}

}).start();

}

public void chooseMusic(){

chooser = new JFileChooser();

chooser.setMultiSelectionEnabled(true);

chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

chooser.setMultiSelectionEnabled(true);

FileNameExtensionFilter filter = new FileNameExtensionFilter(".", "mp3");

chooser.setFileFilter(filter);

int returnVal = chooser.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION) {

files = chooser.getSelectedFiles();

for(File file : files){

music_ArrayList .add(file.getName());

System.out.println(music_ArrayList);

}

music_List = music_ArrayList.toArray(music_List);

System.out.println(music_List[0]);

}

else if(chooser.getSelectedFiles() == null){

return;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JListJava Swing 组件的一个列表组件,可以用来展示一组数据。以下是 JList 的用法: 1. 创建 JList 对象: ``` JList list = new JList(); ``` 2. 设置数据模型: JList 组件需要一个数据模型来存储数据,可以使用 DefaultListModel 类来创建数据模型: ``` DefaultListModel model = new DefaultListModel(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); ``` 3. 设置显示样式: 可以通过设置 ListCellRenderer 对象来改变每个列表项的显示样式: ``` list.setCellRenderer(new MyListRenderer()); ``` 4. 添加到容器: 将 JList 添加到容器即可显示出来: ``` JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); ``` 完整示例代码: ``` import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; public class MyListRenderer implements ListCellRenderer<String> { public static void main(String[] args) { JFrame frame = new JFrame(); JList<String> list = new JList<String>(); DefaultListModel<String> model = new DefaultListModel<String>(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); list.setCellRenderer(new MyListRenderer()); JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); frame.pack(); frame.setVisible(true); } public MyListRenderer() { } @Override public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = new JLabel(); label.setText(value); if (isSelected) { label.setBackground(list.getSelectionBackground()); label.setForeground(list.getSelectionForeground()); } else { label.setBackground(list.getBackground()); label.setForeground(list.getForeground()); } label.setOpaque(true); return label; } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值