2014-12-13 166 views
0

我正致力於分析圖形中最短和最簡單的方式之間的差異。爲了更容易,我創建了一個非常簡單的JFrame,用於可視化圖形和方式。正如你在pictue上看到的那樣,背景似乎是部分透明的。我不知道原因。JFrame部分透明

http://postimg.org/image/p1axfhj9h/(索裏,但我不允許上傳pictues,尚)

是否存在與繪畫方法的問題?此問題只發生在我的私人筆記本電腦上。即時通訊使用java 1.7.0_45

我對背景顏色或透明度做了noch更改。繪畫方法只繪製字符串,橢圓和線條。

public Drucker(Graph graph) { 
    super(); 
    this.graph = graph; 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
} 


@Override 
public void paint(Graphics g) { 

    for (int i = 0; i < this.graph.getKanten().size(); i++) { 
     xxx 
    } 

    for (int i = 0; i < this.graph.getKnoten().size(); i++) { 
     xxx 
    }  

    this.paintDistance(g); 
} 

我的java vesion有問題嗎? 我家有人可以幫助我。

感謝和問候

回答

2

我認爲你需要super constructpaint()方法。

這只是意味着寫這篇:

@Override 
public void paint(Graphics g) { 
    super.paint(g); 

    // your code goes here 
} 

當超級構造方法,基本上意味着你會畫畫,然後父對象繪製字符串。

這只是一個預感。事實上,讓我知道這是否確實解決了您的問題。

+2

這是一個很好的預感,我也擔心OP首先覆蓋'paint',但也可能壓倒頂級容器的'paint' – MadProgrammer 2014-12-13 12:46:22

+0

你是對的。這是問題所在。也許我無意中刪除了這一行。謝謝你,祝你有美好的一天。 – theawak3r 2014-12-13 12:48:14

+0

使用'super()'表示法調用超級構造函數與使用'super.foo()'表示法調用超級方法不同。後者與構建對象無關。 – gknicker 2014-12-13 12:48:59