[JavaSwing] JList的Java中 – JList的Java中

内容
创建并启动在JList的事件
添加或删除JList中的元素

JList的允许显示同一组中的对象的列表. 在这篇文章中,我们将了解它的基本功能.

创建并启动在JList的事件

我们会去创建一个包含程序 1 JList的包括颜色, 当点击一个特定的颜色,JFrame的背景颜色将改变颜色名称.
JList的在Java

package nguyenvanquan7826.JList;

import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListDemo extends JFrame {
	private int width = 200;
	private int height = 250;

	// create array string color to show in list
	String[] colorName = { "blue", "green", "red" };
	// create array color
	Color[] backGroundColor = { Color.blue, Color.green, Color.red };
	JList<String> myJList;

	// create JList width array color
	public JListDemo() {
		// set layout for contenPane
		getContentPane().setLayout(new FlowLayout());

		// add list color
		add(createJList());

		// set display
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(width, height);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private JList createJList() {
		// create list
		myJList = new JList<String>(colorName);
		// add listen to get action when select item in JList
		myJList.addListSelectionListener(new ListSelectionListener() {
			@Override
			public void valueChanged(ListSelectionEvent e) {
				changeBackGround();
			}
		});
		return myJList;
	}

	// change background JFrame
	private void changeBackGround() {
		getContentPane().setBackground(
				backGroundColor[myJList.getSelectedIndex()]);
	}

	public static void main(String[] args) {
		new JListDemo();
	}
}

* JList中的构造方法:
– JList的(): 创建一个中空的JList
– JList的(和[] 的ListData): 创建 1 JList的与数据的数组
– JList的(数据模型的ListModel): JList的使用创造了一个模型
– JList的(矢量的ListData): 与JList的矢量数据创建

* 捕获事件 在列表中选择一个项目,当我们添加方法 addListSelectionListener JList的供. 然后将覆盖模式 的valueChanged 以执行所需任务. 使用方法 getSelectedIndex JList中得到选择的位置

* 注意 我们通过直接用上面的例子中的JFrame应该要改变,我们需要在框架的背景颜色 setLayout的町同性恋 并使这种做法呼叫时更换背景 的getContentPane().的setBackground.

添加或删除JList中的元素

下面的一个例子将执行的JList元素的加入. 包含的JFrame 1 的JPanel (主面板), 该面板是主要的制药BorderLayout的setLayout的,并包含像下面的图片对象:

添加或删除JList的项目

当选择从JList组件,然后按删除或添加,它会删除JTextFiel选择一个或多个元素添加到JList中.

package nguyenvanquan7826.JList;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class JListAddOrRemoveItem extends JFrame implements ActionListener {
	private int width = 200;
	private int height = 250;
	private JTextField tfAdd;
	private JList<String> myList;

	public JListAddOrRemoveItem() {
		// add main panel
		add(createMainPanel());

		// display
		setTitle("Add - remove item in JList");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(width, height);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private JPanel createMainPanel() {
		// create main panel
		JPanel panel = new JPanel(new BorderLayout());
		// set border empty for main panel
		panel.setBorder(new EmptyBorder(0, 10, 10, 10));
		// add content
		panel.add(createDeletePanel(), BorderLayout.PAGE_START);
		panel.add(createAddPanel(), BorderLayout.PAGE_END);
		panel.add(createList(), BorderLayout.CENTER);
		return panel;
	}

	// delete panel in top of frame
	private JPanel createDeletePanel() {
		JPanel panel = new JPanel();
		panel.add(createButton("Delete"));
		return panel;
	}

	// add panel in bottom of frame
	private JPanel createAddPanel() {
		JPanel panel = new JPanel(new GridLayout(0, 1));
		panel.add(tfAdd = new JTextField());
		panel.add(createButton("Add"));
		return panel;
	}

	// create Jlist
	private JList<String> createList() {
		// create defaultListModel
		DefaultListModel<String> model = new DefaultListModel<>();
		// add element to model
		model.addElement("Java");
		model.addElement("C#");
		// set model to JList
		myList = new JList<String>(model);
		return myList;
	}

	// create a button
	private JButton createButton(String btnName) {
		JButton btn = new JButton(btnName);
		btn.addActionListener(this);
		return btn;
	}

	private void deleteItem() {
		// get model of Jlist
		DefaultListModel<String> model = (DefaultListModel<String>) myList
				.getModel();
		// delete item is selected
		if (!model.isEmpty() && myList.getSelectedIndex() >= 0) {
			model.remove(myList.getSelectedIndex());
		}
		// set model for JList
		myList.setModel(model);
	}

	private void addItem() {
		String item = tfAdd.getText().trim();
		if (item.equals("")) {
			JOptionPane.showMessageDialog(null,
					"Pleas enter item add to Jlist", "Error",
					JOptionPane.ERROR_MESSAGE);
		} else {
			DefaultListModel model = (DefaultListModel) myList.getModel();
			model.addElement(item);
			myList.setModel(model);
			tfAdd.setText("");
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand() == "Delete") {
			deleteItem();
			return;
		}
		if (e.getActionCommand() == "Add") {
			addItem();
		}
	}

	public static void main(String[] args) {
		new JListAddOrRemoveItem();
	}
}

在这个例子中JList中与初始化 1 Là车型DefaultListModel, 就是说 1 Java的构建模式,让我们, 它很容易使用. 到JList的强制性元素的补充,我们通过模型JList的完成不能直接 (除非你每次使用添加剂 1 名单 (或数组) 分子,并再次重新创建的JList). 已在代码明确注明的步骤细节, 你跟踪哪些.

阅读更多: JList的使用, JList的类, 定制的JList