2012-02-11 6 views
2

Я хочу изменить внешний вид кнопки Matlab с Java. Для этого я использую приложение Findjobj. Тем не менее, из-за того, что я не знаю Java, у меня есть проблемы с правильной пользой Java-классов, что мне нужно, чтобы моя кнопка имела закругленные углы. На основании информации, найденной here), я пытался настроить кнопку с классом BorderFactory:Пользовательский внешний вид кнопки Matlab с Java

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: Я понимаю, что я забыл включить классы 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)); 

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

+1

Пожалуйста, отредактируйте свой вопрос, чтобы включить _complete_ [sscce] (http://sscce.org/), который демонстрирует проблему, которую вы описываете. – trashgod

+0

Спасибо за ваш комментарий. Возможно, теперь вы найдете вопрос более полным. – julian

ответ

2

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

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

+0

Большое спасибо за ваш ответ и добавление. – julian

2

Возможно, это должно быть Color.red или Color.RED.


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

+0

Спасибо за ваш ответ. Я пробовал оба, но никто из них не работает. – julian

+0

Благодарим вас за ответ. Я только что редактировал мой вопрос, но результаты не увенчались успехом. – julian

Смежные вопросы