JLabel被错误地展示

时间:2011-10-12 11:32:35

标签: java swing

我有GUI问题。在我的绘图模拟器中,我创建了一个显示mouseclicks坐标的JLabel。我把它放在我的JFrame的西南方,但每次点击后,除了它的第一个位置,鼠标坐标也出现在JFrame的西北方。我不明白这是什么问题。代码在这里。

    JLabel statusBar = new JLabel( "Mouse outside JPanel" );
    Container panel;
    JFrame frame = new JFrame();
    panel = frame.getContentPane();
    panel.add(this);
    frame.setJMenuBar(jmb);
    frame.add(statusBar, BorderLayout.SOUTH );
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(700,700);
    frame.setVisible(true);

这是我编辑JLabel的方式

    statusBar.setText( String.format( "Clicked at [%d, %d]", 
                        e.getX(), e.getY() ) );

整个代码可能会更长,这就是我复制一些重要部分的原因

          public class Tester extends JPanel implements MouseMotionListener, MouseListener {
          ....

这是绘制单行的方式,我在这里设置标签的名称

      else if(lineci == true){
        if(mouseclicks == 0){
            l1.point1.x = e.getX();
            l1.point1.y = e.getY();
            statusBar.setText( String.format( "Clicked at [%d, %d]", 
                    e.getX(), e.getY() ) );
            mouseclicks++;
        }
        else if(mouseclicks == 1){
            l1.point2.x = e.getX();
            l1.point2.y = e.getY();
            statusBar.setText( String.format( "Clicked at [%d, %d]", 
                    e.getX(), e.getY() ) );
            mouseclicks = 0;
            int a = l1.point2.y - l1.point1.y;
            int b = l1.point1.x - l1.point2.x;
            int c = (l1.point2.x * l1.point1.y) - (l1.point1.x * l1.point2.y);
            l1.denklem[0] = a;
            l1.denklem[1] = b;
            l1.denklem[2] = c;
            array.add(l1);
            array3.add(l1);
            repaint();

        }

顺便说一下,我正在创建类的构造函数之外创建JLabel对象,就在创建我的意思之后。

仍然存在同样的问题。

1 个答案:

答案 0 :(得分:1)

而不是

frame.add(statusBar, BorderLayout.SOUTH ); 

尝试

frame.getContentPane().add(statusBar, BorderLayout.SOUTH );