使用Java自定义Matlab按钮外观



我想用Java更改Matlab按钮的外观。为此,我使用了应用程序Findjobj。然而,由于我不懂Java,我很难正确使用Java类,我需要让我的按钮有圆角。根据这里找到的信息),我已经尝试用类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));

EDIT:我意识到我忘了包含color和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));

然而,结果仍然让我不高兴。这是最后的出场。我可以把拐角修圆。

如果想要圆形按钮,则必须使用Look&感觉谁的按钮UI代理绘制了圆形按钮。示例包括此处所示的com.apple.laf.AquaButtonUI和此处所示出的javax.swing.plaf.synth.SynthLookAndFeel。您也可以实现自己的ButtonUIBorder,如图所示,但您必须决定是否值得这样做。

附录:看看这个相关的Matlab问题和相关的Swing教程,注意"如果你要设置L&F,你应该把它作为应用程序中的第一步。"

应该是Color.redColor.RED


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

最新更新