从另一个类调用paint或render方法 - Java

时间:2015-11-19 13:39:23

标签: java swing

我为这个问题做了大量的研究,但找不到任何可以帮助我的东西。 当我运行这个应用程序时,我唯一能看到的是一个空的JFrame,预期的输出是一个带有黑色矩形的JFrame。这是我的代码,有两个类。

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 个答案:

答案 0 :(得分:1)

您没有将win添加到frame('contentPane)。您应该在JPanel - 课程中延伸Window,而不是Component

因此,如果您将Window win = new Window(ObjectId.Window, 10, 10, 10, 10)移至setFrame()方法(您不需要win.repaint())并调用frame.getContentPane().add(win)(或类似内容),则可以使用。< / p>