当嵌入HTML页面时,删除java小程序中的外部白色边框
我是一个dotnet爱好者,正在尝试为我的应用程序创建一个java applet
。我已经能够成功地创建applet
,并且在我的应用程序中,在我签名之后,它也可以正常工作
我唯一的问题是,当我将它转换成一个HTML
文件(在我的例子中是.cshtml文件)时,我看到小程序周围有一个白色边框,这不是HTML中的样式
我一直试图摆脱边境,但我没能做到。小程序只包含一个带有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());
但这也没有帮助
你能告诉我哪里出了问题吗
下面是精简的小程序代码:https://gist.github.com/anonymous/1f31a97b68d34a5821e9
# 1 楼答案
如果您的整个小程序只是一个可单击的区域,我根本不会使用
JButton
。只要在JPanel
上注册一个MouseListener
就可以了JButton
附带了许多额外的“功能”,如着色和悬停行为,这在GUI应用程序中非常好,但在小程序中却不是您想要的,它的唯一目的是处理一次单击您遇到的问题是因为您正在使用Nimbus Look and Feel。如果你不知道你在做什么,那就是自动生成代码的问题——它会做你没有要求它做的事情
关于^{} 的文件提到了这个问题:
因此,由于您要求Swing使用Nimbus LaF,所以您覆盖边界的尝试没有起到任何作用
简易修复:不要使用Nimbus LaF;只需从
init()
中删除与Nimbus相关的代码更好的解决方法:不要使用} to display your image 。你不想要一个
JButton
,使用JPanel
来监听点击和^{JButton
的行为,所以不要使用它。这需要更多的努力(您必须将JLabel
放在中心位置),但这是一种“正确”的方法,您基本上可以将jButton1
转换为JLabel
,您的代码也可以工作下面是我最后看到的屏幕截图:
我没有费心调整
JLabel
解决方案的布局和颜色,因此它看起来不太好看,但是您可以看到第二个或第三个applet上都没有边框还有一些参考资料:The Swing source code(看看
JButton
和AbstractButton
;它们做了很多你不需要的工作),Border with rounded corners & transparency和Java rounded corners on JFrame?