如何向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不支持编辑功能,很悲剧,实在不行可以用一列的JTable代替。或者是用布局做一个假的List代码如下,下面代码有个缺点就是必须控件要填满,否则不会有list效果。

public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */

public NewJFrame() {

initComponents()

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane()

jPanel1 = new javax.swing.JPanel()

jComboBox1 = new javax.swing.JComboBox()

jComboBox2 = new javax.swing.JComboBox()

jComboBox3 = new javax.swing.JComboBox()

jComboBox4 = new javax.swing.JComboBox()

jComboBox5 = new javax.swing.JComboBox()

jComboBox6 = new javax.swing.JComboBox()

jComboBox7 = new javax.swing.JComboBox()

jComboBox8 = new javax.swing.JComboBox()

jComboBox9 = new javax.swing.JComboBox()

jComboBox10 = new javax.swing.JComboBox()

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE)

jScrollPane1.setName("jScrollPane1")// NOI18N

jPanel1.setName("jPanel1")// NOI18N

jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.PAGE_AXIS))

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox1.setName("jComboBox1")// NOI18N

jPanel1.add(jComboBox1)

jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox2.setName("jComboBox2")// NOI18N

jPanel1.add(jComboBox2)

jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox3.setName("jComboBox3")// NOI18N

jPanel1.add(jComboBox3)

jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox4.setName("jComboBox4")// NOI18N

jPanel1.add(jComboBox4)

jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox5.setName("jComboBox5")// NOI18N

jPanel1.add(jComboBox5)

jComboBox6.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox6.setName("jComboBox6")// NOI18N

jPanel1.add(jComboBox6)

jComboBox7.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox7.setName("jComboBox7")// NOI18N

jPanel1.add(jComboBox7)

jComboBox8.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox8.setName("jComboBox8")// NOI18N

jPanel1.add(jComboBox8)

jComboBox9.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox9.setName("jComboBox9")// NOI18N

jPanel1.add(jComboBox9)

jComboBox10.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }))

jComboBox10.setName("jComboBox10")// NOI18N

jPanel1.add(jComboBox10)

jScrollPane1.setViewportView(jPanel1)

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane())

getContentPane().setLayout(layout)

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(142, 142, 142)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(158, Short.MAX_VALUE))

)

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addContainerGap(103, Short.MAX_VALUE)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(97, 97, 97))

)

pack()

}// </editor-fold>

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true)

}

})

}

// Variables declaration - do not modify

private javax.swing.JComboBox jComboBox1

private javax.swing.JComboBox jComboBox10

private javax.swing.JComboBox jComboBox2

private javax.swing.JComboBox jComboBox3

private javax.swing.JComboBox jComboBox4

private javax.swing.JComboBox jComboBox5

private javax.swing.JComboBox jComboBox6

private javax.swing.JComboBox jComboBox7

private javax.swing.JComboBox jComboBox8

private javax.swing.JComboBox jComboBox9

private javax.swing.JPanel jPanel1

private javax.swing.JScrollPane jScrollPane1

// End of variables declaration

}


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

原文地址:https://www.54852.com/bake/11366471.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存