繁体   English   中英

在两个JPanel之间画线

[英]Drawing line between two JPanels

我想在两个JPanel之间画线; 请在“ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);”中验证我的代码是否为其提供了NULL指针异常。

码::

Draw(JPanel one , JPanel two)
{
    //Draw Line
     Graphics2D g=null;
     Graphics2D g2d = (Graphics2D) g;
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
     RenderingHints.VALUE_ANTIALIAS_ON);
     g2d.setColor(Color.lightGray);
     2d.fillRect(0, 0, getWidth(), getHeight());
     g2d.setColor(Color.black);
     Stroke s = new BasicStroke(4.0f);


    // For getting the points of JPanel ona and two//

     int x1 = one.getX() + one.getWidth() / 2;
     int y1 = one.getY() + one.getHeight() / 2;
     int x2 = one.getX() + one.getWidth() / 2;
     int y2 = two.getY() + two.getHeight() / 2;

    //Drawing line
     g2d.drawLine(x1, y1, x2, y2);
}

因为您正在 NULL转换存储g2d

看下面的代码:

Graphics2D g=null;
Graphics2D g2d = (Graphics2D) g;

在第一行中, gNULL 并将其g2d并分配给g2d 因此, g2d变为NULL ,这意味着它无法使用。

您有很多选择。

基本前提是,您需要某种方式来“绘制”当前容器(及其子容器)的顶部。

您可以覆盖父容器的paint方法,但是不建议这样做,因为它会产生很多讨厌的副作用。

更好的解决方案是利用JRootPane的玻璃窗格

您也可以使用JXLayer (或Java 7中的JLayer )来达到相同的结果,但是我没有一个可用的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM