簡體   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