javax swing - 创造窗户

时间:2013-01-31 18:57:18

标签: java swing console

我是Java和Java的初学者我正在学习摇摆api。我的代码有问题,我无法弄清楚如何解决它。请帮忙。

以下是我正在使用的代码示例:

import javax.swing.JFrame;
import javax.swing.JLabel;

public class HelloWorldApp extends JFrame {


  public static void main(String args[]) {

    CustomWindow w = new CustomWindow();
    w.setVisible(true);

  }

  public CustomWindow() {

    setSize(500, 500);
    setTitle("Jacob Perkins");
    JLabel lbl = new JLabel("Hello World!");
    add(lbl);

  }

}

我的问题是我收到以下错误:

invalid method declaration; return type required

3 个答案:

答案 0 :(得分:4)

public CustomWindow() {
    setSize(500, 500);
    setTitle("Jacob Perkins");
    JLabel lbl = new JLabel("Hello World!");
    add(lbl);
}

应该是:

public void CustomWindow() {
    setSize(500, 500);
    setTitle("Jacob Perkins");
    JLabel lbl = new JLabel("Hello World!");
    add(lbl);
}

或者代替void(不返回任何内容),我们将放置我们想要返回的数据类型。该方法现在必须包含return语句,该语句返回与方法签名匹配的适当数据类型,否则您将收到错误:

  

无效的方法声明;需要返回类型

请参阅Returning a Value from a Method

除非您尝试为HelloWorldApp类创建构造函数,否则必须为该方法指定类名(对Providing Constructors for Your Classes进行读取):

public HelloWorldApp() {
    setSize(500, 500);
    setTitle("Jacob Perkins");
    JLabel lbl = new JLabel("Hello World!");
    add(lbl);
 }

其他建议

  • 不要不必要地延长JFrame

  • 请勿致电setSize而是使用正确的LayoutManager和/或覆盖getPreferredSize并返回符合其内容的Dimension。而不是在pack()上致电JFrame,然后再将其设置为可见,但在添加组件后。

  • 通过SwingUtilities.invokeLater(Runnable r)块在Event Dispatch Thread上创建和操作Swing组件:

    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            //create and show ui here
            CustomWindow w = new CustomWindow();
            w.setVisible(true);
        }
    });
    

答案 1 :(得分:3)

这一行

public CustomWindow() {

因为书面需要一个返回类型(如果你没有返回任何东西,void是合适的)。但是,这显然是一个构造函数;如果是这种情况,则需要将其命名为与其所在的类相同。您需要将其重命名为HelloWorldApp或将该类重命名为CustomWindow

答案 2 :(得分:1)

在Java文件名中必须匹配它们正在实现的类。因此,您需要将类和文件名更改为CustomWindow或将构造函数的名称更改为HelloWorldApp():

import javax.swing.JFrame;
import javax.swing.JLabel;

 public class HelloWorldApp extends JFrame {


public static void main(String args[]) {

  HelloWorldApp w = new HelloWorldApp();
  w.setVisible(true);

 }
 public HelloWorldApp() {

   setSize(500, 500);
   setTitle("Jacob Perkins");
   JLabel lbl = new JLabel("Hello World!");
   add(lbl);

 }

 }