0

複数のオブジェクトを表示できるように他のJPaneを保持するGUIJPaneを作成する宿題があります。リスナーの1つでコンパイルエラーが発生しているので、これを理解するのに役立つ可能性があります。IDEの使用は許可されていないということで、このすべての前置きをさせてください。

エラーは次のとおりです。

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);


        }


}
4

3 に答える 3

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()方法を使用します。

System.out.println("Age Group: " + Arrays.toString(ageRanges) + "\n");
于 2012-04-18T20:59:30.977 に答える
3

JComboBoxクラスにはメソッドがありませんaddListSelectionListenerjavadocを参照してください。

現在の選択を変更するイベントをインターセプトする場合は、addActionListener代わりに次を使用してみてください。

jcbo.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

         final int index = jcbo.getSelectedIndex();
         value = ageRanges[index];
    }
});
于 2012-04-18T20:59:47.100 に答える
0

うーん。EclipseのようなIDEの使用が許可されていない場合は、方向マーカーのみを提供します...

そのメソッドについては、jcomboboxのjavadocを確認してください。

ここで見つけることができます:http://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html

于 2012-04-18T21:01:12.627 に答える