使用Java定制Matlab按钮外观

时间:2012-02-11 17:45:13

标签: java swing user-interface matlab look-and-feel

我想用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));

编辑:我意识到我忘了包含颜色和LineBorder的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 个答案:

答案 0 :(得分:2)

应该是Color.redColor.RED


请注意,那里使用的BorderFactory方法仅在Java 1.7(最近)中引入。要使其与1.3版本兼容,请使用直接LineBorder(Color,int,boolean)构造函数。

答案 1 :(得分:2)

如果您想要舍入按钮,则必须使用按钮UI委托绘制圆角按钮的Look & Feel。示例包括com.apple.laf.AquaButtonUI,图示herejavax.swing.plaf.synth.SynthLookAndFeel,显示为here。您也可以实施自己的ButtonUIBorder,如图here所示,但您将决定是否值得付出努力。

附录:看看这个相关的Matlab question和相关的Swing tutorial,请注意“如果你打算设置L& F,你应该把它作为第一个进入您的应用程序。“