2013-06-26 57 views
-2

该程序应该将用户输入的英里数转换为使用GUI界面的公里数。程序目前不编译。Java GUI出错的问题

aaaaa.java:10:错误:无效的方法声明;返回类型需要 公共CalcPanel(){ ^ 1错误

无论我寻找这种类型的程序我看到与该方法没有返回类型的例子。有任何想法吗?由于

下面是程序:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class aaaaa extends JFrame { 
private JLabel messageLabel= new JLabel("Enter distance in miles"); 
private JTextField milesTextField = new JTextField(10);; 
private JButton calcButton = new JButton("Calculate"); 

public CalcPanel() { 
    JPanel panel = new JPanel(); 
    panel.add(messageLabel); 
    panel.add(milesTextField); 
    panel.add(calcButton); 

    calcButton.addActionListener(new CalcButtonListener()); 
} 

public static void main(String[] args) { 
     JFrame frame = new CalcPanel(); 
     frame.setTitle("M to Km Converter"); 
     frame.setLocationRelativeTo(null); 
     frame.setSize(300, 200); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
} 

class CalcButtonListener implements ActionListener {  public void actionPerformed(ActionEvent e) { 
     String input = milesTextField.getText(); 
     double kilometers = Double.parseDouble(input) * 1.6023; 
     JOptionPane.showMessageDialog(null, input + " miles is " + kilometers + " kilometers."); 
    } 
} 
} 

使问题得到解决,但这里是另一回事。面板弹出,但我的messageLabel milesTextField calcButton不显示。

import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 

    public class Aaaa extends JFrame { 
    private JPanel panel; 
    private JLabel messageLabel= new JLabel("Enter distance in miles"); 
    private JTextField milesTextField = new JTextField(10);; 
    private JButton calcButton = new JButton("Calculate"); 

    public Aaaa() { 
     JPanel panel = new JPanel(); 
     panel.add(messageLabel); 
     panel.add(milesTextField); 
     panel.add(calcButton); 
     setVisible(true); 
     calcButton.addActionListener(new CalcButtonListener()); 
    } 

    public static void main(String[] args) { 
      JFrame frame = new Aaaa(); 
      frame.setTitle("M to Km Converter"); 
      frame.setLocationRelativeTo(null); 
      frame.setSize(300, 150); 
    } 

    class CalcButtonListener implements ActionListener {  public void actionPerformed(ActionEvent e) { 
      String input = milesTextField.getText(); 
      double kilometers = Double.parseDouble(input) * 1.6023; 
      JOptionPane.showMessageDialog(null, input + " miles is " + kilometers + " kilometers."); 
     } 
    } 
} 
+0

你为什么改变班级的名字?很有可能,如果这个*是一个任务,并且您可能会遇到麻烦,那么您可以从代码的正文中找到它们。 – Makoto

+1

该课程必须以“Aaaauuuggghhhh城堡”命名。这就是纯净的灵魂可以找到圣杯的地方。 –

+0

所以我继续前进,并将其回滚,因为这会使现有答案看起来非常奇怪。如果您还有其他问题要问,请随时这样做;不过,我强烈建议你在提问前自己对此进行一些调查。 – Makoto

回答

1

似乎是一个错字错误,类和构造函数名称不匹配。您的类名称是aaaaa,而您的构造函数名称是CalcPanel。

2

您试图创建构造函数,但构造函数的名称与该类的名称不匹配。

改为public CalcPanel改为public aaaaaa

+0

这个效果很好。知道这是简单的,但我有一个新的错误... aaaaaa.java:24:错误:非静态方法setVisible(布尔)不能从静态上下文引用 \t \t \t \t setVisible(true); \t \t \t^ 1错误 – Jay

+0

这是一个实现问题 - 您试图在'main'中运行一个继承的非静态方法。你必须把这个声明移到实际的类中,而不是在'main'中。感谢Makoto – Makoto

+0

! – Jay