[JavaSwing] JavaでのJList – JavaでのJList
コンテンツ
JListのでイベントを作成し、キャプチャ
JListの中の要素を追加または削除
JListのは、オブジェクトとグループの一覧を表示することができます. この記事では、それについての基礎を学習します.
JListのでイベントを作成し、キャプチャ
我々は含まれていたプログラムを作成しようとしています 1 JListのを含む色, 色をクリックすると、その後のJFrameの背景色は、その色の名前を変更します.

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のための. その後、メソッドをオーバーライドします 値が変更され 目的のタスクを実行します. 方法を使用して getSelectedIndex JListの中で選択された位置を取ります
* 注目 直接のJFrameを使用して、上記の例で私たちに必要なフレームの背景色を変更する必要があります JFrameのためsetLayoutの 背景を実行するとき、代わりにコールを実装する必要があります getContentPane().setBackgroundの.
JListの中の要素を追加または削除
次の例は、以下の以下の要素でより多くを達成するのJList. JFrameの含む 1 JPanelの (メインパネル), このパネルの主要な製薬setLayoutのBorderLayoutのとは、以下の写真のようなオブジェクトが含まれています:

JListのから選択し、キーを押して選択した要素を削除するか、または追加した場合のJListにJTextFielの要素を削除したり、追加します.
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 モデルのLA DefaultListModel, すなわち 1 Javaは私たちのために構築されたモデル, それを使用するのは簡単です。. 我々はJListのモデルを通じて行っているJListの強制の要素への追加は、直接することはできません (あなたは毎回の追加を使用している場合を除き 1 リスト (または配列) 分子がして、もう一度それを再作成するJList). コード内で明確に注釈が付けられている手順の詳細, あなたはを追跡します.
続きを読む: JListのを使用, クラスのJList, カスタムのJList



có cách nào để setEnable(偽) 1 item cụ thể trong jlist không admin
Mình cũng chưa thử. 🙂
chào ad, cho mình hỏi trong jlist khi muốn click vào một item có thể gọi frame khác làm ntn ạ! 最高経営責任者(CEO): 持っている 1 list phòng ban khi click dô một item bất kì thì sẽ gọi đc tới frame nhân viên
私もこれを試していません. Lâu rồi cũng không động lại nó. ^^ Bạn thử tìm google xem nhé.
admin có code tính cộng trừ nhân chia sử dụng JList không? cho em xin với