Swing'de liste öğesi seçim olaylarını yönetmek, grafik kullanıcı arayüzlerine sahip Java uygulamaları geliştirirken çok önemli bir husustur. Bir Swing tedarikçisi olarak bu olaylarla baş etme konusunda geniş deneyimim var ve bunların nasıl etkili bir şekilde yönetilebileceğine dair bazı içgörüleri paylaşmaktan heyecan duyuyorum.
Swing Listelerini ve Seçim Olaylarını Anlamak
Swing'de birJListnesnelerin listesini görüntüleyen ve kullanıcının bunlardan bir veya daha fazlasını seçmesine olanak tanıyan bir bileşendir. Kullanıcı listeden bir öğe seçtiğinde bir seçim olayı oluşturulur. Bu olay, uygulamanızda seçilen öğe hakkında ayrıntılı bilgilerin görüntülenmesi, hesaplamaların yapılması veya arayüzün başka bir bölümüne gitme gibi çeşitli eylemleri tetiklemek için kullanılabilir.
Liste öğesi seçim olaylarını yönetmek için aşağıdakileri uygulamanız gerekir:ListSelectionListenerarayüz. Bu arayüzün tek bir metodu var,valueChanged(ListSelectionEvent e), listedeki seçim değiştiğinde çağrılır.
İşte nasıl oluşturulacağına dair basit bir örnekJListve bir tane ekleListSelectionListenerona:


javax.swing.*'i içe aktarın; javax.swing.event.ListSelectionEvent'i içe aktarın; javax.swing.event.ListSelectionListener'ı içe aktarın; public class ListSelectionExample { public static void main(String[] args) { JFrame çerçeve = new JFrame("Liste Seçimi Örneği"); çerçeve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String[] data = {"Öğe 1", "Öğe 2", "Öğe 3", "Öğe 4", "Öğe 5"}; JList<String> liste = new JList<>(veri); list.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { JList<String> source = (JList<String>) e.getSource(); int seçilmişIndex = source.getSelectedIndex(); if (selectedIndex != -1) { String seçilmişItem = source.getSelectedValue(); System.out.println("Seçilen öğe: " + seçilmişItem); JScrollPane ScrollPane = new JScrollPane(liste); çerçeve.add(scrollPane); çerçeve.pack(); çerçeve.setVisible(true); } }
Bu örnekte, bir oluşturuyoruzJListbir dizi dizeyle. Daha sonra bir ekliyoruzListSelectionListenerlisteye. İçindedeğerDeğiştirildiyöntemini kullanarak ilk önce seçimin hâlâ ayarlanıp ayarlanmadığını kontrol ederiz.getValueIsAdjustingyöntem. Bu önemlidir çünküdeğerDeğiştirildiKullanıcı seçim yaparken yöntem birden çok kez çağrılabilir. Seçim tamamlandıktan sonra olayın kaynağını alırız (ki buJList), seçilen dizin ve seçilen öğe. Son olarak seçilen öğeyi konsola yazdırıyoruz.
Çoklu Seçim Modlarının Kullanımı
SallanmakJListtekli seçim, tek aralıklı seçim ve çoklu aralıklı seçim gibi farklı seçim modlarını destekler. Seçim modunu kullanarak ayarlayabilirsiniz.setSelectionModeyöntem.
- Tek Seçim: Aynı anda yalnızca bir öğe seçilebilir. Seçim modunu şu şekilde ayarlayabilirsiniz:
ListSelectionModel.SINGLE_SELECTION. - Tek Aralık Seçimi: Bitişik bir öğe aralığı seçilebilir. Seçim modunu şu şekilde ayarlayabilirsiniz:
ListSelectionModel.SINGLE_INTERVAL_SELECTION. - Çoklu Aralık Seçimi: Bitişik olmayan öğe aralıkları seçilebilir. Seçim modunu şu şekilde ayarlayabilirsiniz:
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION.
Çoklu aralık seçiminin nasıl ele alınacağına dair bir örnek:
javax.swing.*'i içe aktarın; javax.swing.event.ListSelectionEvent'i içe aktarın; javax.swing.event.ListSelectionListener'ı içe aktarın; Java.util.List'i içe aktarın; public class MultipleSelectionExample { public static void main(String[] args) { JFrame çerçeve = new JFrame("Çoklu Seçim Örneği"); çerçeve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String[] data = {"Öğe 1", "Öğe 2", "Öğe 3", "Öğe 4", "Öğe 5"}; JList<String> liste = new JList<>(veri); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); list.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { JList<String> source = (JList<String>) e.getSource(); List<String> seçilmişValuesList = source.getSelectedValuesList(); for (String seçilmişItem : seçilmişValuesList) { System.out.println("Seçili öğe: " + seçilmişItem); JScrollPane ScrollPane = new JScrollPane(liste); çerçeve.add(scrollPane); çerçeve.pack(); çerçeve.setVisible(true); } }
Bu örnekte seçim modunu ayarladık.JListileListSelectionModel.MULTIPLE_INTERVAL_SELECTION. İçindedeğerDeğiştirildiyöntemini kullanarak seçilen tüm öğelerin bir listesini alırız.getSelectedValuesListyöntemini kullanın ve ardından seçilen her öğeyi yazdırmak için listeyi yineleyin.
Swing Ürünlerimizdeki Pratik Uygulamalar
Bir Swing tedarikçisi olarak geniş bir yelpazede salıncaklar sunuyoruz.Büyük Renkli Yetişkin Salıncağı,Çocuklar için Bahçe SalıncağıveEv İçin Küçük Salıncak. Uygulamalarımızda liste öğesi seçim etkinlikleri çeşitli şekillerde kullanılabilir.
Örneğin, bir oluşturabilirizJListfarklı türdeki salınımları görüntüler. Kullanıcı listeden bir salıncak seçtiğinde o salıncağa ait boyutları, ağırlık kapasitesi, fiyatı gibi detaylı bilgileri görüntüleyebiliyoruz. Seçim olayını, seçilen salıncağı bir alışveriş sepetine eklemek veya fiyat teklifi oluşturmak gibi eylemleri tetiklemek için de kullanabiliriz.
javax.swing.*'i içe aktarın; javax.swing.event.ListSelectionEvent'i içe aktarın; javax.swing.event.ListSelectionListener'ı içe aktarın; public class SwingSelectionExample { public static void main(String[] args) { JFrame çerçeve = new JFrame("Salıncak Seçimi Örneği"); çerçeve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String[] salıncaklar = {"Büyük Renkli Yetişkin Salıncağı", "Çocuklar için Bahçe Salıncağı", "Ev İçin Küçük Salıncak"}; JList<String> swingList = new JList<>(salınımlar); final JLabel infoLabel = new JLabel("Ayrıntıları görüntülemek için bir salıncak seçin"); swingList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { JList<String> source = (JList<String>) e.getSource(); int seçilmişIndex = source.getSelectedIndex(); if (selectedIndex != -1) { StringselectedSwing = source.getSelectedValue(); String information = ""; switch (selectedSwing) { case "Büyük Renkli Yetişkin Salıncak": ayrıntılar = "Yetişkinler için uygun, büyük ve renkli bir salıncaktır. Yüksek ağırlık kapasitesine sahiptir ve dayanıklı malzemelerden yapılmıştır."; break; case "Çocuklar için Bahçe Salıncağı": information = "Çocukların bahçede eğlenmesi için mükemmel bir salıncak. Güvenlik özellikleri ve parlak renklerle tasarlanmıştır."; Ev İçin Salıncak": ayrıntılar = "Evde kolaylıkla kurulabilen kompakt bir salıncaktır. Küçük alanlar için idealdir."; break; } infoLabel.setText(details); } } } }); JScrollPane ScrollPane = new JScrollPane(swingList); çerçeve.add(scrollPane, java.awt.BorderLayout.WEST); çerçeve.add(infoLabel, java.awt.BorderLayout.CENTER); çerçeve.pack(); çerçeve.setVisible(true); } }
Bu örnekte, bir oluşturuyoruzJListsalıncaklarımızın isimleriyle. Bir kullanıcı listeden bir salıncak seçtiğinde, biranahtarSeçilen salınımın ayrıntılarını almak ve güncellemek için bildirimJEtiketbilgilerle.
Çözüm
Swing'de liste öğesi seçimi olaylarını yönetmek, Java geliştiricileri için önemli bir beceridir. UygulanarakListSelectionListenerArayüz ve farklı seçim modlarını anlayarak etkileşimli ve kullanıcı dostu uygulamalar oluşturabilirsiniz. Bir Swing tedarikçisi olarak, yüksek kaliteli salıncaklar sağlamaya ve müşterilerimizin Swing'in özelliklerinden en iyi şekilde yararlanan uygulamalar geliştirmelerine yardımcı olmaya kendimizi adadık.
Swing ürünlerimizle ilgileniyorsanız veya Swing uygulamalarınızdaki liste öğesi seçimi olaylarını yönetme konusunda sorularınız varsa, satın alma ve daha fazla görüşme için bizimle iletişime geçmenizi öneririz. İhtiyaçlarınızı karşılamak için sizinle birlikte çalışmayı sabırsızlıkla bekliyoruz.
Referanslar
- Oracle'dan "Java Swing Eğitimi"
- Joshua Bloch'tan "Etkili Java"
