如何在jlayeredpane Java中绘制线条



我想在jLayeredPane中画一条线这是我在netbeans上的项目

https://drive.google.com/file/d/0B6e6jjVl5-sCMkJFcEI3MkZEZ1E/view

我有问题,当我点击我的按钮,为什么我不能在我的jlayeredpane画线??这段代码我错在哪里?

我想画一些线在我的jlayeredpane当点击按钮绘制。我尝试添加jlayerpane1。添加一些组件。我把这个设置为可见

如何修复它?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jLayeredPane1.add(new JComponent(){                                   
     ArrayList<Shape> linesList = new ArrayList<Shape>();
    private Shape line = null;
    {
    MouseAdapter mouseAdapter = new MouseAdapter(){
                @Override
        public void mousePressed (MouseEvent e){                       
        line = new Line2D.Double(e.getPoint(), e.getPoint());
        linesList.add(line);
        repaint();
        }
                @Override
        public void mouseDragged(MouseEvent e){
        Line2D shape =(Line2D)line;
        shape.setLine(shape.getP1(), e.getPoint());
        repaint();
        }
                @Override
        public void mouseReleased(MouseEvent e){
        line = null;
        repaint();
        }
    };
    addMouseListener(mouseAdapter);
    addMouseMotionListener(mouseAdapter);
    }
        @Override
    protected void paintComponent(Graphics g){
    Graphics2D g2d = (Graphics2D) g;
    g2d.setPaint(Color.BLUE);
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    for(Shape content : linesList){
        g2d.draw(content);
    }
  }          
    });
    jLayeredPane1.setVisible(true); // set for visible
}

JLayeredPane使用null布局。因此,当你将自定义绘画面板添加到分层窗格时,你需要给面板一个大小,否则大小为(0,0),因此没有什么可绘制的。

所以代码应该是这样的:
JPanel panel = new CustomPaintingPanel();
panel.setSize(300, 300);
layeredPane.add(panel, ...);
frame.add(layeredPane);

最新更新