有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

我一直试图摆脱边境,但我没能做到。小程序只包含一个带有Icon的按钮。这是唯一的控件,我已经将按钮的border属性设置为EmptyBorder

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

jButton1Dx按钮的名称

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

但这也没有帮助

你能告诉我哪里出了问题吗

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


共 (1) 个答案

  1. # 1 楼答案

    如果您的整个小程序只是一个可单击的区域,我根本不会使用JButton。只要在JPanel上注册一个MouseListener就可以了JButton附带了许多额外的“功能”,如着色和悬停行为,这在GUI应用程序中非常好,但在小程序中却不是您想要的,它的唯一目的是处理一次单击

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

    关于^{}的文件提到了这个问题:

    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来监听点击和^{} 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解决方案的布局和颜色,因此它看起来不太好看,但是您可以看到第二个或第三个applet上都没有边框

    还有一些参考资料:The Swing source code(看看JButtonAbstractButton;它们做了很多你不需要的工作),Border with rounded corners & transparencyJava rounded corners on JFrame?