我正在制作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 () ;
}
}