有 Java 编程相关的问题?

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

用Java实现swing自定义Matlab按钮外观

我想用Java更改Matlab按钮的外观。为此,我使用应用程序Findjobj。然而,由于我不懂Java,我很难正确使用Java类,我需要使我的按钮具有圆角。根据找到的信息here),我尝试使用类BorderFactory设置按钮:

hButton = uicontrol('string','click me!');
jButton = findjobj(hButton);
jButton.setCursor(java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jButton.setBorder(BorderFactory.createLineBorder(red,1,true));

但这是行不通的。我收到以下错误消息:

??? Undefined function or variable 'red'.

    Error in ==> de at 4
    jButton.setBorder(BorderFactory.createLineBorder(red,1,true));

编辑:我意识到我忘了包含颜色和线条边框的Java类。修复后,代码如下所示:

import java.awt.Color;
import javax.swing.border.LineBorder;
hButton = uicontrol('Style','pushbutton','String','click me!',...
    'Units','normalized','Position',[0.156 0.64 0.688 0.1],'FontSize',9,...
    'ForegroundColor','w','BackgroundColor','k');
jButton = findjobj(hButton);
jButton.setCursor(java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jButton.setBorder(LineBorder(Color.white,5,true));

然而,结果仍然没有公布给我Here是最终外观。我可以把拐角弄圆


共 (2) 个答案

  1. # 1 楼答案

    这可能是Color.redColor.RED


    请注意,这里使用的BorderFactory方法仅在Java1.7(最近)中引入。要使其与1.3版本兼容,请使用直接^{}构造函数

  2. # 2 楼答案

    如果你想要圆角按钮,你必须使用一个Look & Feel,它的按钮UI委托绘制圆角按钮。示例包括com.apple.laf.AquaButtonUI,如图所示here,以及javax.swing.plaf.synth.SynthLookAndFeel,如图所示here。您还可以实现自己的ButtonUIBorder,如图所示here,但您必须决定是否值得这样做

    附录:查看相关的Matlab question和相关的Swing tutorial,注意“如果要设置L&F,应该将其作为应用程序中的第一步进行设置。”