2012-02-04 7 views
5

Czy można nakładać przycisk na etykietę w Swing?Nakładanie JButton na JLabel w Java Swing?

Na przykład, jeśli masz JLabel z obrazem i bez tekstu, i chcę nadać mój przycisk nad tym JLabel. Etykieta jest zdefiniowana jako:

myLabel = new javax.swing.JLabel(new ImageIcon(myPicture)); 

Jeśli nie, to wszelkie pomysły, jak mogę to zrozumieć, dziękuję.

EDIT: Właściwie czytałem o dodawanie JPanel do JLabel, kiedy dodać panel z układem przycisków, kompiluje w porządku, ale nic nie jest widoczny, tylko JLabel z obrazem

UPDATE: Jak sugeruje przez @ paranoid-android, jakoś rozwiązałem mój problem. Jednak nadal muszę wiedzieć, w jaki sposób można dostosować pozycje komponentów nałożonych na JLabel, ponieważ nie mam wiele kontroli (prawdopodobnie dlatego, że zwykle używam netbeans do rysowania układów, a to wymagałoby twardego kodowania).

coś jak to działa:

ImagePanel(Image image, int id) { 
    this.image = image; 
    this.tile = false; 

    JButton backButton = new JButton(); 
    JButton nextButton = new JButton(); 
    backButton.setText(" BACK "); 
    nextButton.setText(" NEXT "); 


    add(backButton); 
    add(nextButton); 

}; 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
} 
+0

Czy próbujesz utworzyć JButton bez granic? Lub klikalny JLabel? – Raceimaztion

+0

@Raceimaztion, mam JLabel z obrazem ustawionym w nieokreślonej ramce, tak że na ekranie widzisz tylko obraz bez obramowania lub czegokolwiek. Teraz chcę dodać inne opcje nakładając je na ten obraz, może muszę spróbować z obrazem w Panelu, ale chciałem wiedzieć, czy jest to coś możliwego do zrealizowania, o co prosiłem? – Johnydep

+0

Zgłoś, co działa, a co nie, proszę. :) – rtheunissen

Odpowiedz

9

Można to zrobić za pomocą JLayeredPane, choć jeśli dobrze rozumiem, absolutnie najlepszy sposób, aby to zrobić byłoby zastąpić paintComponent:

// as part of your JPanel 
@Override 
public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    g.drawImage(background, 0, 0, this); 
} 

Następnie można dodać elementy do Panel, jak chcesz, bez potrzeby stosowania JLabel.