2016-04-02 21 views
-1

この本の「Javaでの簡単なステップ」では、ItemListener、ItemEvent、itemStateChanged()などを使用するこのセクションでは「Handling Item events」と呼ばれるこのセクションでは、間違っているようです。私は彼らが書いた、チェックされた、ダブルチェックされたすべてを書いたが、コードは動作したくない。ItemListenerが登録されていない

(そのテキストボックスに登録し、いくつかのクリック可能なオプションを持つウィンドウことになっている)

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

エラーは何ですか? – Pooya

+0

私たちのお手伝いをしてください:1)何よりもまず、あなたが投稿したコードの何が間違っているのか、それがどういうわけではないのかを教えてください。 2)読みにくい左揃えのコードではなく、正しい形式のコードを投稿するよう努力してください。 –

+0

OK、私はあなたのためにあなたのコードを書いていますので、読みやすくすることでうまくいけば、読んで理解する意欲がある多くの専門家を引き付けるでしょうが、どのように動作していないのかについて説明します。 –

答えて

1

あなたが見えるようにあなたのJFrameを設定しませんでした。ここでは、コードです。 mainメソッドに次のコードを追加してください。また、コンストラクタメソッドStates()setVisible(true);を削除すると、その時点でJFrameにすべてのコンポーネントが追加されていないためです。

SwingUtilities.invokeLater(new Runnable() { 

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

     } 

    }); 
+1

あなたのanwserのおかげで、コードはどちらの方法でも動作します。この問題は、ItemListener.javaという名前のファイルのように思えました。とにかく、ありがとう! – Melvinml

+0

@Melvinml空白の画面が表示されるので、このコードは実際には機能しません。フレームを自身のコンストラクタで可視に設定することは、それを使用する正しい方法ではありません。 –

+0

私はちょうどそれを試み、それは完全に働いた、私は知らない... – Melvinml

関連する問題