在JPanel中未绘制线条

时间:2017-06-09 17:25:12

标签: java swing jpanel mouse paint

我正在制作GUI Builder。顶部有菜单栏,左侧是属性窗格,右侧是编辑器窗格。

我创建了一个扩展UserPanel

的课程JPanel

在我的班级UserPanel中,有一个paint()方法可以获得鼠标按下的点,获取释放鼠标的点,并在它们之间画一条线,但是从未调用paint()方法。我设置了一个BreakPoint并进行了调试,但仍然没有调用paint()。我在每个revalidate()方法的末尾添加了mouseListener方法。

我想在EditorPane处绘制矩形。

为什么我的paint()方法没有执行,我该如何解决呢?

Container BigContainer ;
JPanel AttributePane ;
JPanel EditorPane ;
Point pStart = null ;
Point pFlexible = null ;

class GUI_Buider extends JFrame
{
    BigContainer = new Container () ;
    BorderLayout Border1 = new BorderLayout ( 20 , 10 ) ;
    BigContainer.setLayout ( Border1 ) ;

    AttributePane = new JPanel () ;
    BigContainer.add ( AttributePane , Border1.WEST ) ;

    EditorPane = new JPanel () ;
    BigContainer.add ( EditorPane , Border1.WEST ) ;

    UserMouse usermouse = new UserMouse () ;
    getContentPane ().addMouseListener ( usermouse ) ;

    UserPanel pan = new UserPanel () ;
    getCotentPane ().add ( pan ) ;

}

class UserPanel extends JPanel
{
    UserPanel ()
    {
        super.revalidate () ;
        revalidate () ;
    }
    public void paintComponent ( Graphics g )
    {
        if ( ( null != pStart ) && ( null != pFlexible ) )
            g.drawLine ( pStart.x , pStart.y , pFlexible.x , pFlexible.y ) ;

        revalidate () ;
    }

    public void paint ( Graphics g )
    {
        if ( ( null != pStart ) && ( null != pFlexible ) )
            g.drawLine ( pStart.x , pStart.y , pFlexible.x , pFlexible.y ) ;

        revalidate () ;
    }
}
class UserMouse implements MouseListenr
{
    // I implement mouseEntered, mouseExited, mouseClicked

    public void mousePressed ( MouseEvent e )
    {
        pStart = e.getPoint () ;
    }
    public void mouseReleased ( MouseEvent e )
    {
        pFlexible = e.getPoint () ;
        revalidate () ;
    }
}

0 个答案:

没有答案