所以我在一个类中有这个类,它是JPanel的一个实现。
private static class Line extends JComponent {
private static final long serialVersionUID = 1L;
@Override
public void paintComponent(Graphics g) {
System.out.println("Pozvan paintComponent()");
g.setColor(Color.YELLOW);
g.drawLine(20, 20, 100, 20);
super.paintComponent(g);
}
}
这是一段代码,用于创建Line的单个实例:
Line line = new Line();
line.setOpaque(true);
add(line);
我真的不知道我在这里做错了什么。当我画一个矩形时,一切都画得很好。
答案 0 :(得分:1)
当我将高度设置为远程大数时,它可以工作。
Swing组件的默认大小为(0,0)。由于大小为0,因此无需绘画。
g.drawLine(20, 20, 100, 20);
使用上述信息,这意味着您的组件需要大小为(120,40)。也就是说,宽度= 20 + 100和高度= 20 + 20,以便绘制组件。
I added line.setBounds(20, 20, 80, 50);
只有部分线条会被绘制,因为您将宽度设置为80而不是120。
阅读Custom Painting上Swing教程中的部分,了解更多信息和示例。