【问题标题】:JButton in Eclipse: "Button cannot be resolved or is not a field"Eclipse 中的 JButton:“按钮无法解析或不是字段”
【发布时间】:2017-06-07 09:29:58
【问题描述】:

Java 和此页面的新手。 当按下 JButton 时,我试图执行某个操作。按照本教程(德语,抱歉)http://www.java-tutorial.org/actionlistener.html,我使用了 JFrame 设计功能并随后添加了内容:

public class JFrame extends javax.swing.JFrame implements ActionListener
{

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                JFrame frame = new JFrame();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public JFrame()
{

    this.setTitle("BMS Anpassen");

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JButton btnFlush = new JButton("Flush!");
    btnFlush.setBounds(170, 209, 89, 23);
    contentPane.add(btnFlush);

    JSpinner spinner = new JSpinner();
    spinner.setToolTipText("Gib die Spannung ein!");
    spinner.setModel(new SpinnerNumberModel(new Float(3000), new Float(2700), new Float(4100), new Float(100)));
    spinner.setBounds(56, 49, 52, 20);
    contentPane.add(spinner);

    JLabel lblMv = new JLabel("mV");
    lblMv.setFont(new Font("Tahoma", Font.PLAIN, 13));
    lblMv.setBounds(113, 51, 24, 14);
    contentPane.add(lblMv);

    JButton btnSetParameters = new JButton("Set Parameters");
    btnSetParameters.setBounds(152, 175, 130, 23);
    contentPane.add(btnSetParameters);

    //Buttons dem Listener zuordnen
    btnFlush.addActionListener(this);
    btnSetParameters.addActionListener(this);

}

public void actionPerformed(ActionEvent ae){

    if(ae.getSource() == this.btnSetParameters){

    // Parameter in Config schreiben/Write parameters in Config
    FileWriter fw = new FileWriter("ConfigBMS.txt");
    BufferedWriter bw = new BufferedWriter(fw);

    bw.write("25000");
    bw.newLine();
    bw.write("42000");
    bw.newLine();
    bw.write("27000");
    bw.newLine();
    bw.write("41000");

    bw.close();
    }
    else
    {           
    }
}

}

它现在给我错误消息“btnSetParameters 无法解析或不是字段”。在这里阅读 JButtons 上的其他帖子对我没有帮助,或者我不明白。我觉得if(ae.getSource() == this.btnSetParameters){ 中的this 是问题所在,但我找不到解决方法。

非常感谢您朝正确方向的任何推动,并提前感谢您,

奥利

【问题讨论】:

  • 错误出现在哪一行? :)
  • 在构造函数之外声明btnSetParameters,就像使用contentPane一样。
  • 请不要对研究得很糟糕的问题投赞成票。 OP假装是新人,不代表他也不会在谷歌上写几个字。
  • 我陷入了编码,没有时间从头开始学习,所以谷歌搜索对我来说比对你们中的一些人来说更难。由于英语也不是我的第一语言,您通常只是不知道自己在寻找什么。但是感谢您的链接,我会尝试理解这一点。到目前为止,crazyname-guys 的回答如下!编辑:错误出现在if(ae.getSource() == this.btnSetParameters){

标签: java eclipse swing jbutton


【解决方案1】:

您有范围问题,btnSetParameters 必须声明为 Frame 成员字段

public class JFrame extends javax.swing.JFrame implements ActionListener {
    private JButton btnSetParameters;

并且没有在构造函数内部,而是使用构造函数来初始化按钮!

public JFrame() {
    .... 
    btnSetParameters = new JButton("Set Parameters");
}

【讨论】:

  • 非常感谢,这有帮助。我必须为 configfile-part 中的写入构建 try/catch 块,但到目前为止它有效!
  • public class JFrame,嗯,仔细想想应该是-public class MyFrame,不要在方法、构造函数中使用保留的java名称或标识符
【解决方案2】:

您必须使 JButton btnSetParameters 成为该类的字段 - 目前它只是在构造函数的上下文中。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2015-10-28
    • 2014-10-12
    • 2014-03-27
    • 2014-01-05
    • 2016-05-20
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多