[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