2016-04-02 16 views
-1

"Java in easy Steps" adlı bu kitapla ilgili bazı Java temel bilgilerini öğrenmeye çalışıyorum, ancak bu bölümde, ItemListener, ItemEvent, itemStateChanged() öğelerini başkalarının yanı sıra kullandığımız "Öğe Öğesi olayları" adı verilen bu bölümde bulabilirsiniz. yanlış görünüyor. Yazmam, kontrol etmem ve çift kontrol etmemi istedikleri her şeyi yazdım, ancak kod çalışmak istemiyor.ItemListener kayıt olmuyor

(Onun metin kutusuna kayıt bazı tıklanabilir seçenekler içeren bir pencere olması gerekiyor)

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 

class States extends JFrame implements ItemListener { 
    JPanel pnl = new JPanel(); 
    String[] styles = { "Deep Dish", "Gourmet Style", "Thin and Crispy" }; 
    JComboBox<String> box = new JComboBox<String>(styles); 
    JRadioButton rad1 = new JRadioButton("White"); 
    JRadioButton rad2 = new JRadioButton("Red"); 
    ButtonGroup wines = new ButtonGroup(); 
    JCheckBox chk = new JCheckBox("Pepperoni"); 
    JTextArea txtArea = new JTextArea(5, 38); 

    public States() { 
     super("Swing Window"); 
     setSize(500, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     add(pnl); 
     setVisible(true); 
     wines.add(rad1); 
     wines.add(rad2); 
     pnl.add(rad1); 
     pnl.add(rad2); 
     pnl.add(txtArea); 
     pnl.add(box); 
     pnl.add(chk); 
     rad1.addItemListener(this); 
     rad2.addItemListener(this); 
     chk.addItemListener(this); 
     box.addItemListener(this); 
    } 

    public void itemStateChanged(ItemEvent event) { 
     if (event.getItemSelectable() == rad1) { 
      txtArea.setText("White wine selected"); 
     } 
     if (event.getItemSelectable() == rad2) { 
      txtArea.setText("Red wine selected"); 
     } 
     if ((event.getItemSelectable() == chk) && (event.getStateChange() == ItemEvent.SELECTED)) { 
      txtArea.append("\nPepperoni selected\n"); 
     } 
     if ((event.getItemSelectable() == box) && (event.getStateChange() == ItemEvent.SELECTED)) { 
      txtArea.append(event.getItem().toString() + "selected"); 
     } 
    } 

    public static void main(String[] args) { 
     States gui = new States(); 
    } 
} 
+1

Hata nedir? – Pooya

+0

Lütfen bize yardım etmemize yardımcı olun: 1) İlk ve en önemlisi, gönderdiğiniz kodda neyin yanlış olduğunu, nasıl çalışmadığını bize bildirin - Ayrıntılar ** do ** matter. 2) sadece okunması zor olan tüm sol-yaslanmış kod değil, sadece iyi biçimlendirilmiş kod göndermek için çaba lütfen. –

+0

Tamam, sizin için kodunuzu biçimlendirdim, umarım okumayı kolaylaştırarak, bunu okumak ve anlamak için çaba göstermeye istekli olacak daha fazla uzman çekeriz, ancak yine de neden bize anlatmanız gerekir ve nasıl çalışmıyor? –

cevap

1

listenize JFrame görünür olmasını set vermedi: İşte kodudur. main yönteminize aşağıdaki kodu ekleyin. Ayrıca, 1, 1, 1, bu nedenle tüm bileşenlerini eklemediğinden, contructor yönteminiz States()'u siliniz.

SwingUtilities.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      States gui = new States(); 
      gui.pack(); 
      gui.setVisible(true); 

     } 

    }); 
+1

anwser için teşekkürler, kod her iki şekilde de çalışır. Sorun, beni karıştırıyordu ItemListener.java adlı bir dosya gibi görünüyordu. Yine de teşekkürler! – Melvinml

+0

@Melvinml Bu kod aslında boş bir ekran göstereceğinden çalışmaz. Çerçevenin kendi yapıcısında görünmesini sağlamak, onu kullanmak için doğru yol değildir. –

+0

Sadece denedim ve mükemmel çalıştı, bilmiyorum ... – Melvinml

İlgili konular