如何向JList 添加 ArrayList ?

如何向JList 添加 ArrayList ?,第1张

在Java中,要向JList添加ArrayList集合,只需调用其setListData方法即可。

具体添加步骤如下:

1、首先要实例化一个JList对象

2、其次是实例一个ArrayList对象,并向其中添加一些数据

3、再次是将ArrayList对象转换为Object数组,调用其toArray方法即可。

4、最后就是向JList中添加ArrayList了,调用setListData方法将ArrayList转换好的Object数组设置进去即可。

JList是Java GUI编程中的一个重要的列表组件,可以方便地显示对象数组或对象 Vector,不过也仅限于图形界面编程中使用,在web开发或者其他应用开发中,基本上是用不到的。

更新的话,可以使用自身的validate方法;

也可以使用SwingUtiltis.updateComponentUI等方法解决。

示例代码如下:

import java.awt.*

import java.awt.event.*

 

import javax.swing.*

 

public class LookAndFeelDemo2 extends JFrame {

 

    private JRadioButton radio1 = new JRadioButton("Metal")

    private JRadioButton radio2 = new JRadioButton("Windows")

    private JRadioButton radio3 = new JRadioButton("Motif")

    private JPanel panelNorth = new JPanel()

    private JPanel panelSouth = new JPanel()

    private JTextArea area = new JTextArea(6, 20)

    private JButton btn = new JButton("button")

    private JCheckBox chk = new JCheckBox("checkBox")

    private JComboBox cmbLookAndFeel = new JComboBox(new String[] { "Metal",

            "Widows", "Motif", "GTK" })

 

    public LookAndFeelDemo2(String title) {

        super(title)

        Container contentPane = this.getContentPane()

        ButtonGroup group = new ButtonGroup()

        group.add(radio1)

        group.add(radio2)

        group.add(radio3)

 

        panelNorth.add(radio1)

        panelNorth.add(radio2)

        panelNorth.add(radio3)

 

        panelSouth.add(btn)

        panelSouth.add(chk)

        panelSouth.add(cmbLookAndFeel)

 

        contentPane.add(panelNorth, BorderLayout.NORTH)

        contentPane.add(area, BorderLayout.CENTER)

        contentPane.add(panelSouth, BorderLayout.SOUTH)

        pack()

 

        setVisible(true)

        setSize(300, 400)

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

 

        // 监听Item事件

        radio1.addItemListener(new MyItemListener())

        radio2.addItemListener(new MyItemListener())

        radio3.addItemListener(new MyItemListener())

 

    }

 

    private class MyItemListener implements ItemListener {

 

        public void itemStateChanged(ItemEvent e) {

            // 取得点击按钮的名字

            String itemName = ((JRadioButton) e.getSource()).getText()

            changeLookAndFeel(itemName)

        }

    }

 

    // 设置外观的private类型方法

 

    private void changeLookAndFeel(String name) {

 

        String lookAndFeel = ""

        if (name.equals("Metal")) {

            lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel"

 

        } else if (name.equals("Windows")) {

            lookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"

        } else if (name.equals("Motif")) {

            lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"

        }else{

            //取得默认的metal外观

            lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel"

        }

 

        try {

            UIManager.setLookAndFeel(lookAndFeel)

            // 运行时指定LookAndFeel,需要SwingUtilities.updateComponentTreeUI(Component

            // c)实现动态的更新

            SwingUtilities.updateComponentTreeUI(this)

            area.setText("当前外观类名:\n" + lookAndFeel)

        } catch (Exception ex) {

            ex.printStackTrace()

        }

 

    }

 

    public static void main(String[] args) {

        new LookAndFeelDemo2("LookAndFeel")

    }

}

JList里面没有添加数据,也可以在Frame布局中显示出来,只不过有时小一些,如果你把JList里面放一个由多个空格组成的字符串,就可以让JList几乎正常显示,我给你个Java语言的例子,你看看吧.

import java.awt.BorderLayout

import java.awt.Frame

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import javax.swing.JList

import javax.swing.event.ListSelectionEvent

import javax.swing.event.ListSelectionListener

public class MyListTest extends Frame implements ListSelectionListener{

    String [] str ={"  "}

    JList list = new JList(str)

    MyListTest(){

     this.setSize(200, 200)

     this.setLayout(new BorderLayout())

        this.add(list,"Center")

        list.addListSelectionListener(this)

        this.addWindowListener(new WindowAdapter(){

         public void windowClosing(WindowEvent e){

          System.exit(0)

         }

        })

        this.setVisible(true)

    }

    public static void main(String [] args){

         new MyListTest()

    }

    @Override

    public void valueChanged(ListSelectionEvent e) {

     if(e.getSource()==list) 

     if(e.getValueIsAdjusting()==true){

      System.out.println(list.getSelectedValue())

     }     

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11408570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存