2013-04-12 4 views
0

Я знаю, что мой подход не является практичным, но это поможет мне привыкнуть к Java немного больше. Я пытаюсь создать подкласс JButton (по имени MyButton). MyButton в основном создаст новую кнопку Gui с пользовательским фоном изображения. Я знаю, как создать новую кнопку в классе, но не знаю, как обращаться к кнопке, создаваемой классом MyButton. Как показывает код, необходимо установить значок кнопки, но это необходимо сделать внутри подкласса, так что указанное использование не должно его использовать. При создании кодер вводит строку, которая ссылается на текстуру, а затем MyButton обладает всеми свойствами JButton, но также имеет свой набор изображений. Ниже приведен мой исходный код.Пользовательские классы клавиш в Java

package Classes; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 

public class MyButton extends JButton{ 
private static final long serialVersionUID = 1L; 

public JButton abc = new JButton(); 
private ImageIcon def; 
private MyButton ghi; 

public MyButton(String image){ 

    def = new ImageIcon(getClass().getResource(image)); 

    //abc.setIcon(def); 
    //abc.setPressedIcon(def); 

    ghi = new MyButton("image.png"); 
    ghi.setIcon(def); 


} 
} 

UPADTE решаемые его. Спасибо Сэму. «this.setIcon» работает Я считаю

+0

'this.setIcon()', а не 'ghi.setIcon()'. У вас уже есть MyButton, вы не хотите создавать другой. –

+0

Знаешь, я совсем забыл о «этом». – user2184376

+0

спасибо, как вы сказали, я работал с кодом и думал об этом. Дурак я! – user2184376

ответ

2

Может быть, я недоразумение вас, но MyButton нет (или, возможно, не должны) создать кнопку, она является кнопку. (Технически, это тип кнопки.) Метод public MyButton... является конструкторным методом для класса MyButton; он инициализирует новый MyButton. Ключ this будет ссылаться на кнопку в классе MyButton; вне его, вы будете использовать код, который выглядит примерно так:

MyButton aButton = new MyButton(); 
0
public class MyButton extends JButton{ 
private static final long serialVersionUID = 1L; 
private ImageIcon def; 
private MyButton ghi; 

public MyButton(){ 
def = new ImageIcon("image.png"); 
super(def); 
} 
} 

Что-то вдоль указанного класса.

0

Если вы расширите JButton, вы получите новый объект, который является кнопкой.
Оригинальный JButton имеет метод рисования, где он нажимает кнопку на холст.

Я думаю, вы должны переопределить метод баттона paintComponent(), как это:

@Override 
public void paintComponent(Graphics g) { 
    // g.drawImage(image) or something... 
} 

// Also has a paintBorder() method 
public void paintBorder(Graphics g) { 
    // Draw your border if mouse over 
} 

Таким образом, вы можете сделать свой initalised файл изображения. Кнопка будет работать как обычный JButton, но конструктор примет URL-адрес изображения. (вы это делали арлеиды).