Eclipse 中的 JButton:"Button cannot be resolved or is not a field"
JButton in Eclipse: "Button cannot be resolved or is not a field"
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 cannot be resolved or is not a field"。在这里阅读 JButtons 上的其他帖子对我没有帮助,或者我不明白。我觉得 if(ae.getSource() == this.btnSetParameters){
中的 this
是问题所在,但我找不到解决它的方法。
非常感谢任何朝着正确方向的推动,并提前致谢,
奥利
您必须使 JButton btnSetParameters
成为 class 的一个字段 - 目前它只是在构造函数的上下文中。
您遇到范围问题,btnSetParameters 必须声明为框架成员字段
public class JFrame extends javax.swing.JFrame implements ActionListener {
private JButton btnSetParameters;
没有构造函数,使用构造函数来初始化按钮!
public JFrame() {
....
btnSetParameters = new JButton("Set Parameters");
}
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 cannot be resolved or is not a field"。在这里阅读 JButtons 上的其他帖子对我没有帮助,或者我不明白。我觉得 if(ae.getSource() == this.btnSetParameters){
中的 this
是问题所在,但我找不到解决它的方法。
非常感谢任何朝着正确方向的推动,并提前致谢,
奥利
您必须使 JButton btnSetParameters
成为 class 的一个字段 - 目前它只是在构造函数的上下文中。
您遇到范围问题,btnSetParameters 必须声明为框架成员字段
public class JFrame extends javax.swing.JFrame implements ActionListener {
private JButton btnSetParameters;
没有构造函数,使用构造函数来初始化按钮!
public JFrame() {
....
btnSetParameters = new JButton("Set Parameters");
}