2015-10-16 100 views
0

我創建一個使用許多JInternalFrames的應用程序,但每當我添加一個到我的JDesktopPane,內部框架的底部陰影是不透明的暗灰色,如下圖所示。這是一個與外觀和感覺有關的問題,並且有沒有辦法解決這個問題而不去除陰影?JInternalFrame的底部陰影問題

enter image description here

編輯:下面是其中演示瞭如何使用最基本的形式,當具有與底部陰影的問題甚至是內部框架一些可運行代碼:

public static void main(String[] args) { 
    JDesktopPane pane = new JDesktopPane(); 
    JFrame frame = new JFrame(); 
    frame.setPreferredSize(new Dimension(600, 400)); 
    pane.setVisible(true); 
    frame.add(pane); 
    JInternalFrame intFrame = new JInternalFrame(); 
    intFrame.setSize(new Dimension(200, 100)); 
    intFrame.setVisible(true); 
    intFrame.setResizable(true); 
    pane.add(intFrame); 
    frame.pack(); 
    frame.setVisible(true); 

} 
+0

你說的「解決這個問題」和「不完全移除陰影」是什麼意思?什麼是「固定」屏幕? – FredK

回答

0

所以以防萬一有人用同樣的問題在這個職位失蹄,事實證明,這是在OS X埃爾卡皮坦java的一個問題,我目前沒有意識到它的修復。

2

你覆蓋的的paint(Component)JInternalFrame直接代替使用類似JPanel的東西,使用其paintComponent方法進行自定義繪畫,然後將其添加到JInternalFramecontentPane

就像一個JFrame,一個JInternalFrame有一個JRootPane,它有一個contentPane,所有這些被包裝在一個框架裝飾中,通過直接覆蓋它的paint(Component),你實際上是在框架裝飾下繪畫,以便底部的灰色區域將實際上是標題區域的高度,你正在繪製

這當然是基於觀察相似問題的所有猜測工作,可以做

+0

你是完全正確的!我覆蓋了繪畫方法。然而,當我創建只是一個通用的JInternalFrame並將其添加到我的JDesktopPane,灰色區域仍然存在,這就是爲什麼我起初以爲這可能是一個L&F的問題。 –

+0

考慮提供一個[runnable示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的迴應 – MadProgrammer

+0

我添加了一個簡短的小程序,但我有一種感覺,這隻會演示在mac上的問題 –