Swingطريقة جعل المستخدم يضيف و يحذف قيم في JList
المثال التالي يعلمك طريقة جعل المستخدم يدخل قيم في كائن الـ JList, بالإضافة إلى جعله قادر على حذف القيم التي أدخلها.
مثال
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
public class Main {
// هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
static JFrame frame = new JFrame("JList demo");
static DefaultListModel model = new DefaultListModel();
static JList list = new JList( model );
static JLabel label = new JLabel("Enter Item");
static JScrollPane listScrollPane = new JScrollPane( list );
static JTextField textField = new JTextField();
static JButton addButton = new JButton("Add Item");
static JButton removeButton = new JButton("Remove");
static JButton removeAllButton = new JButton("Remove All");
static JLabel totalLabel = new JLabel("Total Items: 0");
static int itemsNumber = 0;
public static void main(String[] args) {
// frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
label.setBounds(20, 80, 70, 30);
textField.setBounds(100, 80, 100, 30);
listScrollPane.setBounds(350, 40, 150, 180);
addButton.setBounds(220, 80, 100, 30);
removeButton.setBounds(220, 120, 100, 30);
removeAllButton.setBounds(220, 160, 100, 30);
totalLabel.setBounds(350, 230, 100, 30);
// frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ
frame.add(label);
frame.add(textField);
frame.add(addButton);
frame.add(removeButton);
frame.add(removeAllButton);
frame.add(listScrollPane);
frame.add(totalLabel);
// frame هنا قمنا بتحديد خصائص الـ
frame.setSize(550, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.setVisible(true);
// addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
if( !textField.getText().equals("") )
{
// سيتم إضافة القيمة التي أدخلها المستخدم في مربع النص في القائمة و تحديث عدد العناصر
model.addElement( textField.getText() );
itemsNumber++;
totalLabel.setText( "Total Items: " + itemsNumber );
}
}
});
// removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// إذا كان المستخدم قد قام بتحديد عنصر واحد على الأقل من عناصر القائمة
if( list.getSelectedIndex() != -1 )
{
// كل عنصر تم تحديده فيها ليتم حذفه من خلاله index سيتم تخزين
int[] selectedIndices = list.getSelectedIndices();
for( int i=selectedIndices.length-1; i>=0; i-- )
{
model.removeElementAt( selectedIndices[i] );
itemsNumber--;
}
}
// سيتم تحديث عدد العناصر الموجودة في القائمة
totalLabel.setText( "Total Items: " + itemsNumber );
}
});
// removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
removeAllButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// سيتم حذف جميع قيم القائمة و تصفير عدد العناصر الموجودة فيها
model.removeAllElements();
itemsNumber = 0;
totalLabel.setText( "Total Items: " + itemsNumber );
}
});
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
public class Main {
// هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
static JFrame frame = new JFrame("JList demo");
static DefaultListModel model = new DefaultListModel();
static JList list = new JList( model );
static JLabel label = new JLabel("Enter Item");
static JScrollPane listScrollPane = new JScrollPane( list );
static JTextField textField = new JTextField();
static JButton addButton = new JButton("Add Item");
static JButton removeButton = new JButton("Remove");
static JButton removeAllButton = new JButton("Remove All");
static JLabel totalLabel = new JLabel("Total Items: 0");
static int itemsNumber = 0;
public static void main(String[] args) {
// frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
label.setBounds(20, 80, 70, 30);
textField.setBounds(100, 80, 100, 30);
listScrollPane.setBounds(350, 40, 150, 180);
addButton.setBounds(220, 80, 100, 30);
removeButton.setBounds(220, 120, 100, 30);
removeAllButton.setBounds(220, 160, 100, 30);
totalLabel.setBounds(350, 230, 100, 30);
// frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ
frame.add(label);
frame.add(textField);
frame.add(addButton);
frame.add(removeButton);
frame.add(removeAllButton);
frame.add(listScrollPane);
frame.add(totalLabel);
// frame هنا قمنا بتحديد خصائص الـ
frame.setSize(550, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.setVisible(true);
// addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
if( !textField.getText().equals("") )
{
// سيتم إضافة القيمة التي أدخلها المستخدم في مربع النص في القائمة و تحديث عدد العناصر
model.addElement( textField.getText() );
itemsNumber++;
totalLabel.setText( "Total Items: " + itemsNumber );
}
}
});
// removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// إذا كان المستخدم قد قام بتحديد عنصر واحد على الأقل من عناصر القائمة
if( list.getSelectedIndex() != -1 )
{
// كل عنصر تم تحديده فيها ليتم حذفه من خلاله index سيتم تخزين
int[] selectedIndices = list.getSelectedIndices();
for( int i=selectedIndices.length-1; i>=0; i-- )
{
model.removeElementAt( selectedIndices[i] );
itemsNumber--;
}
}
// سيتم تحديث عدد العناصر الموجودة في القائمة
totalLabel.setText( "Total Items: " + itemsNumber );
}
});
// removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
removeAllButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// سيتم حذف جميع قيم القائمة و تصفير عدد العناصر الموجودة فيها
model.removeAllElements();
itemsNumber = 0;
totalLabel.setText( "Total Items: " + itemsNumber );
}
});
}
}
ستظهر لك النافذة التالية عند التشغيل.
ملاحظة لإلغاء أكثر من عنصر في نفس الوقت, أبق إصبعك على الزر Ctrl أثناء إختيار العناصر, بعدها أنقر على الزر Remove لإلغائهم.