gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:35:39 27 4
gpt4 key购买 nike

我是一名 dotnet 专家,正在尝试为我的应用程序创建一个 java applet。我已经能够成功创建 applet,并且在我签名后它在我的应用程序中也能正常工作。

我遇到的唯一问题是,当我将其嵌入HTML 文件(在我的例子中是.cshtml 文件)时,我看到小程序周围有白色边框,这不是 HTML 中的样式。

我一直在尝试摆脱边界,但我做不到。该小程序仅包含一个带有 Icon 的按钮。那是唯一的控件,我已将按钮的 border 属性设置为 EmptyBorder

这是您在浏览器中查看按钮时的屏幕截图。
Dx Button Image
注意屏幕截图中的DxDx 是一个 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方法中添加了如下代码

jButton1Dx 按钮的名称。

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

但这也没有帮助。

你能告诉我哪里错了吗?

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

最佳答案

如果您的整个小程序只是一个可点击区域,我根本不会使用 JButton。只需在 JPanel 上注册一个 MouseListener 即可。 JButton 带有许多额外的“特性”,例如着色和悬停行为,这些特性在 GUI 应用程序中非常有用,但不是您希望在 applet 中实现的,因为它的唯一目的是处理一次单击。

您遇到的问题是因为您使用的是 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 居中)但这是“正确”的方法,您基本上可以将 jButton1 变成 JLabel 和您的代码将起作用。

这是我最终看到的屏幕截图:

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

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

更多引用资料:The Swing source code (看看 JButtonAbstractButton;它们做了很多这里不需要的工作),Border with rounded corners & transparency , 和 Java rounded corners on JFrame?

关于java - 嵌入 HTML 页面时,删除 Java 小程序中的外部白色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31480800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com