Java代码错误不确定我应该做什么?

时间:2014-01-29 18:13:00

标签: java swing

我买了一本名为“学习Java”的新书,我正在努力解决以下问题。

它问我下面代码的类型,但现在它说我们将用我们自己的图形类替换JLabel。 HelloCompoent是他希望我创建的新图形类,它应该显示Hello Java。

import javax.swing.*;
public class Helloworld {
    public static void main(String[]args){
        JFrame frame = new JFrame ("Hello, Java");
        JLabel label = new JLabel("Hello world", JLabel.CENTER);
        frame.add(label);
        frame.setSize(300,300);
        frame.setVisible(true);
    }
}

我试过

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

public class Helloworld {
    public static void main(String[]args){
        JFrame frame = new JFrame (); 
        class HelloComponent extends JComponent{
              public void paintComponent (Graphics g){
                  g.drawString("Hello, Java", 123, 95);
                  frame.add(new HelloComponent());
              }
        }
   }
}

1 个答案:

答案 0 :(得分:0)

声明你的课程后,你需要创建一个实例并将其添加到框架中:

    HelloComponent helloComponent = new HelloComponent( );
    frame.add(helloComponent);
    frame.setSize(300,300);
    frame.setVisible(true);

你可能应该删除  frame.add(new HelloComponent());

来自paintComponent-method。

只有在将类的实例添加到可访问框架的组件层次结构中时,才会调用paintComponent。所以你必须在调用paintComponent之前将它添加到框架中。因此,您可以从该方法中删除它。