2012-04-18 6 views
0

私は、複数のオブジェクトを表示できるように他のJPanesを保持するGUI JPaneをbuildignしています。私はリスナーの1人にコンパイルエラーが発生しており、これを理解する助けをいくつか使用することができます。私たちがIDEを使用することは許されていないと言って、このすべてを序文にしましょう。JAVAでコンパイルエラー - (<匿名ListSelectionListener>)

エラーがある:

F:\Java\Lab 8\Lab8.java:84: error: cannot find symbol 
     jcbo.addListSelectionListener(new ListSelectionListener() { 
      ^
    symbol: method addListSelectionListener(<anonymous ListSelectionListener>) 
    location: variable jcbo of type JComboBox<String> 
1 error 

プロジェクトコード:

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import javax.swing.event.*; 
    import javax.swing.border.*; 
    import java.util.Scanner; 
    import java.util.EventObject; 


    public class Lab8 extends JFrame { 

     public String name; 
     public String[] ageRanges = {"Select an Age Range","Under 20", "20-29", "30-39", "40-49", "50-59", "60 and Above"}; 
     public String[] destination = {"Mercury", "Venus", "Moon", "Mars", "Jupiter/Europa", "Saturn/Triton", "Pluto + Sharon"}; 
     final JTextField txtName = new JTextField(20); 
     String value; 


     public Lab8() 
     { 





      // Create an array of Strings for age ranges 
      final JComboBox<String> jcbo = new JComboBox<String>(ageRanges); 
      jcbo.setForeground(Color.blue); 
      jcbo.setBackground(Color.white); 


      // Create an array of String destinations 




      // Declare radio buttons 
      JRadioButton jrbMonday, jrbTuesday, jrbWednesday, jrbThursday, jrbFriday; 

      // Create a textfield 
      JTextField jMsg = new JTextField(10); 


      // Create panel to hold label and textbox. 
      JPanel p1 = new JPanel(); 
      p1.setLayout(new BorderLayout(5,0)); 
      p1.add(new JLabel("Name: "), BorderLayout.WEST); 

      p1.add(txtName, BorderLayout.CENTER); 
      jMsg.setHorizontalAlignment(JTextField.LEFT); 


      // Create combobox panel. 
      JPanel p2 = new JPanel(); 
      p2.setLayout(new GridLayout(2,0,5,5)); 
      p2.add(p1, BorderLayout.NORTH); 
      p2.add(new JComboBox<String>(ageRanges), BorderLayout.CENTER); 
      p2.setBorder(new TitledBorder("Passenger Name & Age Range")); 

      final JList<String> jlst = new JList<String>(destination); 

      //Create listbox panel. 
      JPanel p3 = new JPanel(); 
      p3.setLayout(new GridLayout(1, 0)); 
      p3.add(jlst); 
      p3.setBorder(new TitledBorder("Destinations")); 



      jlst.addListSelectionListener(new ListSelectionListener() { 

       public void valueChanged(ListSelectionEvent e){ 

        final int index = jlst.getSelectedIndex(); 
        value = destination[index]; 
       } 
      }); 


      jcbo.addListSelectionListener(new ListSelectionListener() { 

       public void valueChanged(ListSelectionEvent e){ 

        final int index = jcbo.getSelectedIndex(); 
        value = ageRanges[index]; 
       } 
      }); 




      // Create a print button 
      JButton jbtPrint = new JButton("Print"); 


      // Create a new panel to hold radio buttons. 
      JPanel r1 = new JPanel(); 
      r1.setLayout(new GridLayout(3,2)); 
      r1.add(jrbMonday = new JRadioButton("Monday")); 
      r1.add(jrbTuesday = new JRadioButton("Tuesday")); 
      r1.add(jrbWednesday = new JRadioButton("Wednesday")); 
      r1.add(jrbThursday = new JRadioButton("Thursday")); 
      r1.add(jrbFriday = new JRadioButton("Friday")); 
      r1.setBorder(new TitledBorder("Departure Days")); 
      r1.add(jbtPrint); 


      // Create a radio button group to group five buttons 
      ButtonGroup group = new ButtonGroup(); 
      group.add(jrbMonday); 
      group.add(jrbTuesday); 
      group.add(jrbWednesday); 
      group.add(jrbThursday); 
      group.add(jrbFriday); 



      // Create grid to hold contents 
      JPanel pMain = new JPanel(); 
      pMain.setLayout(new BorderLayout(5,0)); 
      add(r1, BorderLayout.CENTER); 
      add(p2, BorderLayout.NORTH); 
      add(p3, BorderLayout. EAST); 



      // Create button listener 
      jbtPrint.addActionListener(new ButtonListener()); 

      jrbMonday.addActionListener(new mListener()); 
      jrbTuesday.addActionListener(new tListener()); 
      jrbWednesday.addActionListener(new wListener()); 
      jrbThursday.addActionListener(new rListener()); 
      jrbFriday.addActionListener(new fListener()); 



} 
      int flag = 0; 


      // Declare radio button variable 
      boolean monday, tuesday, wednesday, thursday, friday; 

      public void monday(){ 
       monday = true; 
      } 
      public void tuesday(){ 
       tuesday = true; 
      } 
      public void wednesday(){ 
       wednesday = true; 
      } 
      public void thursday(){ 
       thursday = true; 
      } 
      public void friday(){ 
       friday = true; 
      } 





      public class mListener implements ActionListener 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
       monday(); 
       flag = 1; 
       } 
      } 

      public class tListener implements ActionListener 
         { 
       public void actionPerformed(ActionEvent e) 
       { 
       tuesday(); 
       flag = 2; 
       } 
      } 

      public class wListener implements ActionListener 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
       wednesday(); 
       flag = 3; 
       } 
      } 

      public class rListener implements ActionListener 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
       thursday(); 
       flag = 4; 
       } 
      } 

      public class fListener implements ActionListener 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
       friday(); 
       flag = 5; 
       } 
      } 

      public void setText(){ 
       name = txtName.getText(); 
     } 


      /** Handle the print button */ 
      class ButtonListener implements ActionListener { 
       ButtonListener(){ 
       } 
       public void actionPerformed(ActionEvent e) { 
       // Get values from fields 
        setText(); 
       System.out.println("Passenger's Name: " + name + "\n"); 
       System.out.println("Age Group: " + ageRanges + "\n"); 
       System.out.println("Destination: " + value + "\n"); 
       System.out.println("Departure Day: " + flag + "\n"); 



       } 
       /*jbtPrint.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) 
        { 

        } 
       });*/ 

} 





public static void main(String[] args) 
     { 
      Lab8 frame = new Lab8(); 
      // frame.pack(); 
      frame.setTitle("Lab 8 Application"); 
      frame.setLocationRelativeTo(null); // Center the frame 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setSize(425, 275); 
      frame.setVisible(true); 


     } 


} 
+2

'JComboBox'は、単に'何の方法 'addListSelectionListener(...)を持っていません。結局のところリストではありません。あなたは何をしようとしているのですか?たぶん私は下の私の答えでそれを推測した:) –

答えて

4

JComboBoxは単にない方法addListSelectionListener(...)を有していません。結局のところリストではありません。

コードから、ユーザがJComboBoxで何かを選択したときに、いくつかのコードがトリガされるように見えます。そのためActionListenerを使用します。

jcbo.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
    int index = jcbo.getSelectedIndex(); 
    value = ageRanges[index]; 
    } 
}); 

以前とは全く無関係:

[Ljava.lang.String;@1283052については、アレイ上toString()を呼び出す(あるいは同じ効果を持つ既存の文字列に連結することに注意してください)、あなたに内容を与えるのではなく、配列型と内部ハッシュコードを混在させます。内容についてArrays.toString() methodsのいずれかを使用します。

System.out.println("Age Group: " + Arrays.toString(ageRanges) + "\n"); 
+0

それはほとんど動作しますが、私は結果を得る:年齢グループ:[Ljava.lang.String; @ 1283052 –

+0

@ケビン・シュルツ:それはあなたが配列 ' ageRanges'を使用します。あなたのコードをもう一度チェックしてください。 – Tudor

+0

@Kevin配列の内容を出力するように答えを更新しました。ああ、私は誤解していると思う。 Tudorのように一つの値だけを出力したいのであれば、私の 'Arrays.toString()'のアドバイスは役に立ちません。 –

3

JComboBoxクラスは何addListSelectionListenerメソッドを持っていません。 javadocを参照してください。

あなたは、現在の選択ではなくaddActionListenerを使用してみてください変更のイベントインターセプトする場合:

jcbo.addActionListener(new ActionListener() { 

    public void actionPerformed(ActionEvent e) { 

     final int index = jcbo.getSelectedIndex(); 
     value = ageRanges[index]; 
    } 
}); 
+0

addItemListener(ItemListener listener)についてはどうですか?選択変更イベントは処理されませんか? –

+0

@Tudorの間違った答え – mKorbel

0

うーんを。あなたが日食のようなIDEを使うことを許されていないなら、私は方向マーカーを与えるだけです...

その方法のjcomboboxのjavadocをチェックしてください。

あなたはここでそれを見つけることができます:http://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html