2014-01-29 94 views
0

我买了一本名为“学习Java”的新书,我正在努力解决以下问题。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()); 
       } 
     } 
    } 
} 
+0

您可能应该创建一个名为HelloComponent的新类。 –

+0

这就是我试过的 – james

+0

你在问两件事。你在标题中提到了一个错误,但是在这里你展示了一些你需要帮助的东西。这是什么?你能向我们展示你为'HelloComponent'尝试了什么,而不是让我们猜测这个问题?没有人可以可靠地做出这种猜测。 – hexafraction

回答

0

声明你的类后,您需要创建它的一个实例,并将其添加到框架:

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

,你或许应该删除 框架.add(new HelloComponent());

from paintComponent-method。

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