有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JInternalFrame底部阴影问题

我正在创建一个使用许多JinternalFrame的应用程序,但每当我将一个JinternalFrame添加到JDesktopPane时,内部框架的底部阴影是不透明的深灰色,如下所示。这是外观和感觉上的问题吗?有没有一种方法可以在不完全消除阴影的情况下解决这个问题

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);

}

共 (2) 个答案

  1. # 1 楼答案

    因此,如果有人遇到同样的问题,偶然发现了这篇文章,结果发现这是OS X El Capitan中java的一个问题,而我目前还不知道如何解决它

  2. # 2 楼答案

    您已经直接覆盖了JInternalFramepaint(Component),而不是使用类似JPanel的东西,使用它的paintComponent方法进行自定义绘制,然后将其添加到JInternalFramecontentPane

    就像一个JFrame,一个JInternalFrame有一个JRootPane,它有一个contentPane,所有这些都被包装在一个框架装饰中,通过直接覆盖它的paint(Component),你实际上是在框架装饰下绘画,因此底部的灰色区域实际上是你正在绘画的标题区域的高度

    当然,这都是基于对模拟问题的观察而进行的猜测工作,但由于您没有提供任何可运行的示例,所以我只能这样做