【问题标题】:how to draw line in jlayeredpane Java如何在 jlayeredpane Java 中画线
【发布时间】:2015-08-28 11:58:35
【问题描述】:

我想在我的 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
}

【问题讨论】:

  • 如果您需要更多帮助,请发布适当的 SSCCE 来说明问题,因为我们不知道您如何创建框架、分层窗格和自定义绘画面板的上下文,所以我们不能判断代码是否正确,因为我们不是读心者。
  • thx @camickr 我正在使用 Netbean IDE 我只是调用那个按钮。并添加 jlayeredpane1...我已将我的分辨率程序设置为 1024x768
  • 不明白你上一条评论的意义。你已经得到了答案。如果答案没有帮助,请发布SSCCE。评论没有帮助。
  • i've been share my source code - 在论坛上发布代码,而不是在谷歌驱动器上。

标签: java drag-and-drop line graphics2d jlayeredpane


【解决方案1】:

JLayeredPane 使用空布局。因此,当您将自定义绘画面板添加到分层窗格时,您需要为面板指定大小,否则大小为 (0, 0),因此没有可绘画的内容。

所以代码应该是这样的:

JPanel panel = new CustomPaintingPanel();
panel.setSize(300, 300);
layeredPane.add(panel, ...);
frame.add(layeredPane);

【讨论】:

  • 对不起我没有使用 JPanel。我很抱歉..我使用 jlayeredPane.and 我一直在分享我的源代码..for SSCCE @_@b..
  • im using jlayeredPane. - 不要在 JLayeredPane 上绘画。如上所示,您可以在添加到分层窗格的组件上进行绘制。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
相关资源
最近更新 更多