【问题标题】:Java Button, StringsJava 按钮、字符串
【发布时间】:2014-03-15 07:49:51
【问题描述】:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Project2KarlAnderson extends JFrame 
{

     private JTextField firstName = new JTextField();
     private JTextField lastName = new JTextField();
     private JTextField age = new JTextField();
     private JRadioButton mGender = new JRadioButton("Male");
     private JRadioButton fGender = new JRadioButton("Female");

     private JButton printName = new JButton("Print Name");


    public Project2KarlAnderson()
    {

     JPanel panelOne = new JPanel(new GridLayout(3, 3, 5, 5));
      panelOne.add(new JLabel("Enter First Name"));
      panelOne.add(firstName);
      panelOne.add(new JLabel("Enter Last Name"));
      panelOne.add(lastName);
      panelOne.add(new JLabel("Enter Age"));
      panelOne.add(age);


     JPanel panelTwo = new JPanel(new FlowLayout(FlowLayout.RIGHT));
       panelTwo.add(printName);


     JPanel panelThree = new JPanel(new FlowLayout(FlowLayout.LEFT));
      panelThree.add(mGender);
      panelThree.add(fGender);

     String[] states = {"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", 
     "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", 
         "MA", "MI", "MN", "MS", "MO","MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH",
         "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI",
         "WY"};

     JComboBox stateList = new JComboBox(states);






     JPanel panelFour = new JPanel(new FlowLayout(FlowLayout.RIGHT));
     panelFour.add(stateList);

     add(panelOne, BorderLayout.CENTER);
     add(panelTwo, BorderLayout.SOUTH);
     add(panelThree, BorderLayout.WEST);
     add(panelFour, BorderLayout.EAST);


     printName.addActionListener(new ButtonListener());
     }

     private class ButtonListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String first = firstName.getText();
            String last = lastName.getText();           
            String state = stateList.getSelectedText().toString();

            System.out.print("Welcome "+ first +" " + last +" " + state);

        }       

    }   


    public static void main(String[] args)
    {
        Project2KarlAnderson form = new Project2KarlAnderson();
            form.setTitle("Name Box");
            form.setSize(350, 175);
            form.setLocationRelativeTo(null);
            form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            form.setVisible(true);
    }
}

我收到以下错误。我一直在绞尽脑汁想找出问题所在。

java:68: error: cannot find symbol
                String state = stateList.getSelectedText().toString();
                               ^
symbol:   variable stateList
location: class Project2KarlAnderson.ButtonListener

Note: Project2KarlAnderson.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

【问题讨论】:

  • 你知道“找不到符号”错误是什么意思吗?
  • stateList 似乎是在构造函数中声明的局部变量。如果您想在其他方法中使用它,请考虑将其移动到您的类级别并使其成为字段,或者将其作为方法参数传递。
  • 您没有声明stateList 变量,或者它在当前范围内不可见。
  • Cannot find Symbol: Java的可能重复
  • 我改变了 stateList.getSelectedText().toString();到 stateList.getSelectedItem().toString();现在一切正常。

标签: java actionlistener


【解决方案1】:

好的,这样做,

public class Project2KarlAnderson extends JFrame 
{
    String[] states = {"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", 
                  "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME",  "MD", 
 "MA", "MI", "MN", "MS", "MO","MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND","OH",
 "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI",
 "WY"};

JComboBox stateList;

public Project2KarlAnderson()
{
     stateList = new JComboBox(states);
}}

【讨论】:

  • Project2KarlAnderson.java:68: 错误:找不到符号字符串 state = stateList.getSelectedText().toString(); ^ 符号:方法 getSelectedText() 位置:JComboBox 类型的变量 stateList
【解决方案2】:

不要在构造函数中定义你的变量。这样做,

public class Project2KarlAnderson extends JFrame 
{
    String[] states = {"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", 
                      "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME",  "MD", 
     "MA", "MI", "MN", "MS", "MO","MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND","OH",
     "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI",
     "WY"};

    JComboBox stateList = new JComboBox(states); 

    public Project2KarlAnderson()
    {

    }
}

现在它可以工作了。谢谢。

【讨论】:

  • Project2KarlAnderson.java:66: 错误:找不到符号字符串 state = stateList.getSelectedText().toString(); ^ 符号:方法 getSelectedText() 位置:JComboBox 类型的变量 stateList 注意:Project2KarlAnderson.java 使用未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译以获取详细信息。 1 个错误
【解决方案3】:

stateList 字段在构造函数中声明。所以外面是买不到的。这是一个局部变量。
要解决此问题,您需要在构造函数之外声明变量。例如,在“JButton printName”行之后声明它。但是您可以在开始时使用 null 声明它。你可以像你所做的那样在构造函数中为这个变量分配一个值(引用)。

【讨论】:

  • 如果我把这条线去掉 "String state = stateList.getSelectedText().toString();"并将其更改为 String state = "text";它编译得很好,我只是收到错误“注意:Project2KarlAnderson.java 使用未经检查或不安全的操作。注意:使用 -Xlint 重新编译:未检查详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 2019-04-06
  • 2014-01-04
相关资源
最近更新 更多