当嵌入到 HTML 页面中时,删除 java 小程序中的外部白色边框
Remove outer white border in a java applet when embedded inside an HTML page
我是一个 dotnet 专家,我正在尝试为我的应用程序创建一个 java applet
。我已经能够成功创建 applet
并且在我签名后它在我的应用程序中也能正常工作。
我遇到的唯一问题是,当我 embed
将它放入 HTML
文件 (在我的例子中是 .cshtml 文件),我看到小程序周围有白色边框,这不是 HTML.
中的样式
我一直在尝试摆脱边界,但我做不到。该小程序仅包含一个带有 Icon
的按钮。那是唯一的控件,我已将按钮的 border
属性 设置为 EmptyBorder
这是您在浏览器中查看按钮时的屏幕截图。
注意屏幕截图中的 Dx。 Dx 是一个 java applet
,您可以注意到它周围的 WHITE 边框。
这是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
方法中添加了如下代码
jButton1
是 Dx 按钮的名称。
jButton1.setBorder(null);
jButton1.setBorder(BorderFactory.createEmptyBorder());
但这也无济于事。
你能告诉我哪里错了吗?
这是精简的小程序代码:https://gist.github.com/anonymous/1f31a97b68d34a5821e9
如果您的整个小程序只是一个可点击区域,我根本不会使用 JButton
。只需在 JPanel
上注册 MouseListener
即可。 JButton
带有许多额外的 "features" ,例如在 GUI 应用程序中非常棒的阴影和悬停行为,但不是您想要的小程序,因为小程序的唯一目的是处理一次单击。
您 运行 遇到的问题是因为您使用的是 Nimbus Look and Feel。如果您不知道自己在这样做,那就是自动生成代码的问题 - 它会执行您没有要求它执行的操作。
.setBorder()
的文档提到了这个问题:
Although technically you can set the border on any object that inherits from JComponent, the look and feel implementation of many standard Swing components doesn't work well with user-set borders.
所以您尝试覆盖边界没有做任何事情,因为您要求 Swing 使用 Nimbus LaF。
轻松修复:不要使用 Nimbus LaF;只需从 init()
.
中删除与 Nimbus 相关的代码
更好的解决方法: 不要使用 JButton
,使用 JPanel
来监听点击和 JLabel
to display your image。您不想要 JButton
的行为,所以不要使用它。这需要更多的努力(您必须使 JLabel
居中),但这是 "right" 的方法,您基本上可以将 jButton1
变成 JLabel
并且您的代码将起作用。
这是我最终看到的屏幕截图:
我没有调整 JLabel
解决方案的布局和颜色,所以它看起来不太好,但是你可以看到第二个或第三个小程序都没有边框。
更多参考资料:The Swing source code (take a look at JButton
and AbstractButton
; they do a lot of work you don't need here), Border with rounded corners & transparency, and Java rounded corners on JFrame?
我是一个 dotnet 专家,我正在尝试为我的应用程序创建一个 java applet
。我已经能够成功创建 applet
并且在我签名后它在我的应用程序中也能正常工作。
我遇到的唯一问题是,当我 embed
将它放入 HTML
文件 (在我的例子中是 .cshtml 文件),我看到小程序周围有白色边框,这不是 HTML.
我一直在尝试摆脱边界,但我做不到。该小程序仅包含一个带有 Icon
的按钮。那是唯一的控件,我已将按钮的 border
属性 设置为 EmptyBorder
这是您在浏览器中查看按钮时的屏幕截图。
注意屏幕截图中的 Dx。 Dx 是一个 java applet
,您可以注意到它周围的 WHITE 边框。
这是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
方法中添加了如下代码
jButton1
是 Dx 按钮的名称。
jButton1.setBorder(null);
jButton1.setBorder(BorderFactory.createEmptyBorder());
但这也无济于事。
你能告诉我哪里错了吗?
这是精简的小程序代码:https://gist.github.com/anonymous/1f31a97b68d34a5821e9
如果您的整个小程序只是一个可点击区域,我根本不会使用 JButton
。只需在 JPanel
上注册 MouseListener
即可。 JButton
带有许多额外的 "features" ,例如在 GUI 应用程序中非常棒的阴影和悬停行为,但不是您想要的小程序,因为小程序的唯一目的是处理一次单击。
您 运行 遇到的问题是因为您使用的是 Nimbus Look and Feel。如果您不知道自己在这样做,那就是自动生成代码的问题 - 它会执行您没有要求它执行的操作。
.setBorder()
的文档提到了这个问题:
Although technically you can set the border on any object that inherits from JComponent, the look and feel implementation of many standard Swing components doesn't work well with user-set borders.
所以您尝试覆盖边界没有做任何事情,因为您要求 Swing 使用 Nimbus LaF。
轻松修复:不要使用 Nimbus LaF;只需从 init()
.
更好的解决方法: 不要使用 JButton
,使用 JPanel
来监听点击和 JLabel
to display your image。您不想要 JButton
的行为,所以不要使用它。这需要更多的努力(您必须使 JLabel
居中),但这是 "right" 的方法,您基本上可以将 jButton1
变成 JLabel
并且您的代码将起作用。
这是我最终看到的屏幕截图:
我没有调整 JLabel
解决方案的布局和颜色,所以它看起来不太好,但是你可以看到第二个或第三个小程序都没有边框。
更多参考资料:The Swing source code (take a look at JButton
and AbstractButton
; they do a lot of work you don't need here), Border with rounded corners & transparency, and Java rounded corners on JFrame?