代码之家  ›  专栏  ›  技术社区  ›  Silent Hunter

当嵌入HTML页面时,删除java小程序中的外部白色边框

  •  5
  • Silent Hunter  · 技术社区  · 9 年前

    我是一个网络人,正在尝试创建一个java applet 我的申请。我已经成功地创建了 小程序 在我签署申请后,它在我的申请中也很好。

    我唯一的问题是 embed 它变成了 HTML 文件 (在我的例子中是.cshtml文件) ,我看到小程序周围有一个白色边框,这不是HTML中的样式。

    我一直试图摆脱边境,但我没能做到。小程序仅包含一个按钮,该按钮具有 Icon 这是一个很好的例子。这是唯一的控制,我已经设置了 border 按钮的属性 EmptyBorder

    这是在浏览器中查看该按钮时的屏幕截图。
    Dx Button Image
    注意 数字x 在屏幕截图中。这个 数字x 是一个 java applet 你可以注意到 白色 周围的边界。

    这是 HTML格式

    <applet width="55" height="40" border="0" 
            codebase="~/Content/My/applet" 
            id="DxApplet" name="DxApplet" 
            code="DxApplet.class" 
            archive="DxButtonApplet.jar">
        <param name="boxborder" value="false"> 
        @Html.Raw(ViewBag.AppletParameters)
    </applet>
    

    此外,我还添加了以下内容 CSS格式 但这也无济于事。

    applet:focus {
        outline: none;
        -moz-outline-style: none;
    } 
    

    我还在 init applet的方法

    jButton1 是的名称 数字x 按钮

    jButton1.setBorder(null);
    jButton1.setBorder(BorderFactory.createEmptyBorder());
    

    但这也无济于事。

    你能告诉我我哪里错了吗?

    下面是精简的小程序代码: https://gist.github.com/anonymous/1f31a97b68d34a5821e9

    1 回复  |  直到 9 年前
        1
  •  2
  •   Community Mofi    7 年前

    如果整个小程序只是一个可点击区域,我不会使用 JButton 完全只需注册 MouseListener JPanel 你可以走了。 按扭 提供了许多额外的“功能”,如阴影和悬停行为,这在GUI应用程序中很好,但在小程序中不是你想要的,小程序的唯一目的是处理一次单击。

    你遇到的问题是因为你正在使用 Nimbus Look and Feel 。如果你不知道你在做什么,那就是自动生成代码的问题所在——它会做你没有要求它做的事情。

    的文档 .setBorder() 提到这个问题:

    虽然从技术上讲,您可以在继承自JComponent的任何对象上设置边界,但许多标准Swing组件的外观实现与用户设置的边界不兼容。

    所以你试图覆盖边界没有任何效果,因为你要求Swing使用NimbusLaF。

    轻松修复: 不要使用Nimbus LaF;只需从中删除与Nimbus相关的代码 init() .

    更好的解决方案: 不要使用 按扭 ,使用 面板 收听点击和 JLabel to display your image 。你没有 希望 一个 按扭 ,所以不要使用它。这需要更多的努力(您必须将 标签类 )但这是“正确”的做法,你基本上可以转身 jButton1 进入 标签类 你的代码就会正常工作。

    下面是我最后看到的内容的截图:

    Screenshot of three different versions of the applet; original, Nimbus-disabled, and JLabel instead of JButton

    我没有费心调整布局和颜色 标签类 解决方案,所以看起来不太好,但您可以看到第二个或第三个小程序上都没有边界。

    更多参考: The Swing source code (看看 按扭 AbstractButton ; 他们做了很多你不需要的工作), Border with rounded corners & transparency Java rounded corners on JFrame?