我一直在努力学习如何创建GUI Java程序。我一直在读一本书来学习这个过程但是尽管我用这封信复制了这本书(据我所知),我遇到了很多问题。这是我的完整代码。
package healthprofilegui;
//packages to be imported for the GUI
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class HealthProfileGUI extends JFrame implements ActionListener {
// text field variables used to get user input.
JTextField txtName = new JTextField(15);
JTextField txtAge = new JTextField(15);
JTextField txtWeight = new JTextField(15);
JTextField txtHeight_feet = new JTextField(15);
JTextField txtHeight_inches = new JTextField(15);
//text field variables used to display calculations.
JTextField txtBMI = new JTextField(15);
JTextField txtCategory = new JTextField(15);
JTextField txtMaxHeartRate = new JTextField(15);
//buttons to be used for the program.
JButton btnDisplay = new JButton("Display");
JButton btnClear = new JButton("Clear");
Integer heightTotal = null;
private HealthProfile myProfile;
public profileGUI()
{
super("HealthProfile");
myProfile = new HealthProfile();
setLayout(new GridLayout(0,2));
//adds the text field labels to the program.
add(new JLabel("txtName"));
add(txtName);
add(new JLabel("txtAge"));
add(txtAge);
add(new JLabel("txtWeight"));
add(txtWeight);
add(new JLabel("txtHeight_feet"));
add(txtHeight_feet);
add(new JLabel("txtHeight_inches"));
add(txtHeight_inches);
//adds the buttons to the program.
add(btnDisplay);
add(btnClear);
//adds labels for the output fields
add(new JLabel("txtBMI"));
add(txtBMI);
add(new JLabel("txtCategory"));
add(txtCategory);
add(new JLabel("txtMaxHeartRate"));
add(txtMaxHeartRate);
setVisible(true);
btnDisplay.addActionListener(this);
btnClear.addActionListener(this);
}
@Override
public void action(ActionEvent e)
{
//clear text if the button is pressed.
if(e.getSource() == btnClear)
{
System.out.println("Clear Pressed");
txtName.setText("");
txtAge.setText("");
txtWeight.setText("");
txtHeight_feet.setText("");
txtHeight_inches.setText("");
txtBMI.setText("");
txtCategory.setText("");
txtMaxHeartRate.setText("");
}
//process data if pressed.
if(e.getSource() == btnDisplay)
{
//checks for missing input
if (txtName.getText().isEmpty() || txtAge.getText().isEmpty() || txtWeight.getText().isEmpty() || txtHeight_feet.getText().isEmpty() ||
txtHeight_inches.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "Please provide all input.");
return;
}
myProfile.setName(txtName.getText());
try
{
myProfile.setAge(Integer.parseInt(txtAge.getText()));
myProfile.setWeight(Integer.parseInt(txtWeight.getText()));
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Please enter a numeric value");
return;
}
}
}
public static void main(String[] args) {
}
}
我收到的第一个错误
public class HealthProfileGUI extends JFrame implements ActionListener
HealthProfileGUI
不是抽象的,不会覆盖actionPerformed(ActionEvent)
中的抽象方法ActionListener
。
我不完全确定为什么我会收到此错误。
第二个/第三个是我尝试使用的方法来设置GUI的布局
public profileGUI()
给我错误
invalid method declaration; return type required
我不知道为什么出现这些指令从未使用过" return"在它。
我也得到了这个错误"调用super必须是构造函数中的第一个语句"
代表
super("HealthProfile");
我试图尽可能多地找到这个错误的信息,但是找不到任何能够在相似程度上复制我的问题的信息。
我遇到问题的最后一件事是
@Override
public void action(ActionEvent e)
方法不会覆盖或实现超类型
中的方法我很抱歉有这么多,我尽可能地遵循说明,并假设错误会在我完成所有代码后自行解决。然而事实并非如此。
我非常感谢你的帮助。特别是因为这对我来说是极少数。
答案 0 :(得分:2)
在第一个和第四个错误上,方法是您正在实施的
actionPerformed
接口的一部分。您的方法名为ActionListener
,不在该界面中。
在第二次和第三次错误中,构造函数的名称必须与您的类相同。请注意,这是其他内容。
答案 1 :(得分:1)
一些让你入门的笔记:
[{"identification": {"id":3100,"version":1}},{"json1" : "THIS IS ONE json" }]
一般建议:
当你有很多错误或“大问题”时将其分解为较小的错误。例如,减少你的代码,这样你就只有一个,解决它,然后转移到下一个。更好的做法是逐步建立它,确保每一步都没有错误
如有疑问,请发布MCVE。