2015-11-19 92 views
0

我做了這個問題的研究分配,但找不到任何幫助我的東西。 當我運行這個應用程序時,我會看到的唯一一個空的JFrame,預期的輸出是帶有黑色矩形的JFrame。這是我的代碼,有兩個類。從另一個類調用繪畫或繪製方法 - Java

public class Test { 

public static void main(String[] args) { 
    Test test = new Test("Frame"); 
    test.setFrame(); 
    Window win = new Window(ObjectId.Window, 10, 10, 10, 10); 
    win.repaint(); 
} 

private String title; 

public Test(String title) { 
    this.title = title; 
} 

private void setFrame() { 
    JFrame frame = new JFrame(title); 
    frame.setSize(800, 600); 
    frame.setResizable(false); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

} 

我的第二類:

public class Window extends Component { 

private ObjectId id; 

private int x, y; 
private int width, height; 

public Window(ObjectId id, int x, int y, int width, int height) { 
    this.id = id; 

    this.x = x; 
    this.y = y; 

    this.width = width; 
    this.height = height; 

} 

public void paintComponent(Graphics g) { 
    g.setColor(Color.black); 
    g.fillRect(x, y, width, height); 
} 

感謝

+1

你沒有把'win'添加到幀('s'contentPane')。你應該在'Window'類中擴展'JPanel'而不是'Component'。 –

+0

@LuxxMiner謝謝! :) –

+1

@LuxxMiner將您的評論寫爲答案,以便其他人可以更輕鬆地找到答案。 –

回答

1

您還沒有添加winframe(記者contentPane)。並且您應該在Window類中擴展JPanel,而不是Component

所以,如果你移動Window win = new Window(ObjectId.Window, 10, 10, 10, 10)setFrame()方法(你不需要win.repaint()),並調用frame.getContentPane().add(win)(或類似的東西),它會工作。