Пользовательский внешний вид кнопки Matlab с Java - PullRequest
2 голосов
/ 11 февраля 2012

Я хочу изменить внешний вид кнопки Matlab с Java.Для этого я использую приложение 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));

РЕДАКТИРОВАТЬ: Я понимаю, что забыл включить классы Java для цвета и LineBorder.После исправления код выглядит следующим образом:

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));

Однако результат для меня все еще не радует. Здесь - окончательный вид.Я могу заставить углы скругляться.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Если вы хотите округленные кнопки, вам придется использовать Look & Feel , чей делегат пользовательского интерфейса кнопки рисует округлые кнопки. Примеры включают com.apple.laf.AquaButtonUI, показано здесь и javax.swing.plaf.synth.SynthLookAndFeel, показано здесь . Вы также можете реализовать свои собственные ButtonUI и Border, как показано здесь , но вам придется решить, стоит ли это усилий.

Приложение: Глядя на этот связанный вопрос Matlab и соответствующее руководство по Swing , обратите внимание, что «Если вы собираетесь установить L & F, вы должны сделать это как первый шаг в вашем приложении. "

2 голосов
/ 11 февраля 2012

Вероятно, это должно быть Color.red или Color.RED.


Обратите внимание, что используемый здесь метод BorderFactory был введен только в Java 1.7 (недавно).Чтобы сделать его совместимым с версиями до 1.3, используйте прямой конструктор LineBorder(Color,int,boolean).

...