[英]Remove outer white border in a java applet when embedded inside an HTML page
我是一个dotnet的人,我正在尝试为我的应用程序创建一个java applet
。 我已经能够成功创建applet
并且在我签名后它在我的应用程序中也能正常工作。
我唯一的问题是当我embed
它embed
到HTML
文件中时(在我的例子中是.cshtml文件) ,我看到applet周围有一个白色边框,这不是HTML中的样式。
我一直试图摆脱边界,但我无法做到。 applet只包含一个带有Icon
的按钮。 这是唯一的控件,我已将按钮的border
属性设置为EmptyBorder
这是在浏览器中查看按钮时的屏幕截图。
注意屏幕截图中的Dx 。 Dx是一个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;
}
我还在applet的init
方法中添加了以下代码
jButton1
是Dx按钮的名称。
jButton1.setBorder(null);
jButton1.setBorder(BorderFactory.createEmptyBorder());
但这也没有帮助。
你能告诉我我哪里错了吗?
这是精简的applet代码: https : //gist.github.com/anonymous/1f31a97b68d34a5821e9
如果您的整个applet只是一个可点击区域,我根本不会使用JButton
。 只需在JPanel
上注册一个MouseListener
就可以了。 JButton
附带了许多额外的“功能”,如阴影和悬停行为,这在GUI应用程序中很棒,但不是你想要的applet,它的唯一目的是处理单击。
您遇到的问题是因为您正在使用Nimbus外观和感觉 。 如果你不知道你在做那件事,那就是自动生成代码的问题 - 它会做你没有要求的事情。
.setBorder()
的文档提到了这个问题:
虽然从技术上讲,您可以在从JComponent继承的任何对象上设置边框,但许多标准Swing组件的外观实现不适用于用户设置的边框。
所以你试图覆盖边界没有做任何事情,因为你要求Swing使用Nimbus LaF。
轻松修复:不要使用Nimbus LaF; 只需从init()
删除与Nimbus相关的代码即可。
更好的解决方法:不要使用JButton
,使用JPanel
监听点击,使用JLabel
显示图像 。 您不希望 JButton
的行为,所以不要使用它。 这是一个更多的努力(你必须集中JLabel
),但这是“正确”的方式,你可以基本上将jButton1
变成JLabel
,你的代码将工作。
这是我最终看到的截图:
我没有费心调整JLabel
解决方案的布局和颜色,所以它看起来不太好,但你可以看到第二个或第三个applet上没有边框。
更多参考文献: Swing源代码 (看看JButton
和AbstractButton
;它们做了很多你不需要的工作), 带有圆角和透明度的边框 ,以及JFrame上的Java圆角?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.