2014-01-29 87 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之前將它添加到框架中。因此,您可以將其從該方法中刪除。