2009-08-30 3 views
0

Я пытаюсь переопределить поведение кнопки java по умолчанию и попытаться добавить дополнительную метку к кнопке. Я новичок в java GUI и думал, что переопределяющий метод рисования решит мою проблему, но когда я это сделаю и нарисую дополнительную метку в методе Paint Button, это выглядит отлично, но мой ярлык исчезает, если я нажму на эту кнопку в своем приложении.Override java.awt.Button

Я попытался найти несколько руководств о том, как переопределить java.awt.Component, но ничего не нашел. Спасибо.

ответ

0

Здесь a page describing how painting works in awt, что может помочь. Однако, если все, что вам нужно, это добавить дополнительную метку к кнопке, вы должны рассмотреть возможность изменения подкласса на composition. Это намного безопаснее. Ваш составной класс может расширить компонент и определить его собственный метод рисования.

class MyButton extends Component { 
    private Button button; 
    private Label label; 

    public MyButton(String label, String buttonLabel) { 
     label = new Label(label); 
     button = new Button(buttonLabel); 
    } 

    public paint(Graphics g) { 
     label.paint(g); 
     button.paint(g); 
    } 

    ... 
} 
0

Вы не можете переопределить «краски» в основных элементов управления AWT и до сих пор они работают правильно, потому что в Баттона, например, большая часть поведения картины осуществляется с помощью одноранговых классов (а WButton в Windows, например). Я написал много элементов управления AWT для OS/2 JVM еще в 1.1.x, и я не могу представить, что это работает так, как вы этого хотите, если ситуация не изменилась с AWT (маловероятно).

Если вы хотите реально управлять живописью в подобных ситуациях, вам нужно либо свернуть свою, либо пойти с помощью кнопки Swing, а затем изучить «компонент пользовательского интерфейса» (объект делегата, ответственный за покраску элемента управления среди прочего - часть «внешнего вида», используемого в то время).

В основном, элементы управления AWT являются «родными» - то есть есть настоящая кнопка Windows и некоторый Java-код, обернутый вокруг него. Элементы управления Swing являются «чистым java»; но делегируют большую часть своего поведения и почти все их появление на контроллеры пользовательского интерфейса в пакетах look-and-feel.

+0

ну, тогда вы будете удивлены, потому что он отлично работает для меня =) –

+0

Я имел в виду, что он не будет работать так, как вы хотите во всех ситуациях. Например, в случае с оригинальным плакатом, вероятно, происходит то, что собственный элемент управления сам по себе рисует в ответ на событие с кнопкой мыши в Windows - и полностью игнорирует все происходящее на стороне Java в процессе. – M1EK