我为这个问题做了大量的研究,但找不到任何可以帮助我的东西。 当我运行这个应用程序时,我唯一能看到的是一个空的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);
}
由于
答案 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>