drawLine()方法没有绘制任何内容

时间:2015-05-14 12:38:45

标签: java swing line

所以我在一个类中有这个类,它是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);

我真的不知道我在这里做错了什么。当我画一个矩形时,一切都画得很好。

1 个答案:

答案 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教程中的部分,了解更多信息和示例。