2017-11-26 1 views
0

Ich bin Hintergrundbild für JButton oder sagen JTableHeader. Wenn ich gleichzeitig paintComponent mache, wird der Textwert für diese Komponente entfernt.paintComponent Entfernen von Text-Wert der Schaltfläche

Irgendeine Idee, wo ich falsch liege?

JButton btn = new JButton(){ 
    @Override 
    public void paintComponent(Graphics g){ 
     Dimension size = this.getSize(); 
     g.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\User\\Downloads\\MainMenu.jpg"), 0, 0, size.width, size.height, this); 
    } 
}; 
btn.setText("TEST WITH ME"); 
btn.setOpaque(true); 

enter image description here

+2

1) Rufen Sie bei jeder überschriebenen Malmethode immer zuerst die 'super'-Methode auf. Dies zeichnet den Hintergrund, die Rahmen usw. 2) 'g.drawImage (Toolkit.getDefaultToolkit(). GetImage (" C: \\ Benutzer \\ .. 'Laden Sie keine Ressourcen in eine Malmethode. Eine Malmethode muss beendet werden Laden Sie das Image beim Start der Anwendung und speichern Sie es als Attribut der Klasse 3) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org /) 4) Eine Möglichkeit, Bilder für ein Beispiel zu erhalten, besteht darin, eine direkte Verbindung zu Bildern herzustellen, die in [dieses Q & A] zu sehen sind. (Http://stackoverflow.com/q/19209650/418556). –

+2

.. 'btn. setText ("TEST MIT MIR"); '5) Der Text kann im Knopfkonstruktor übergeben werden. 6) Keine Notwendigkeit, beim Benutzer zu schleusen. Besser,' 'Test mit mir" 'oder' "Test mit mir" 'zu verwenden –

+0

Mögliches Duplikat von [Wie erstelle ich ein benutzerdefiniertes JButton in Java mit einer Bilddatenbank?] (Https://stackoverflow.com/questions/8235991/how-to-create-a-custom-jbutton-in-java-with- an-image-base) – user1803551

Antwort

0

Ich habe angegeben kann nicht so viel richtig, was wirklich ich wollte. Aber ich habe eine Antwort gefunden.

@Override 
public void paintComponent(Graphics g){ 
    Dimension size = this.getSize(); 
    g.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\User\\Downloads\\MainMenu.jpg"), 0, 0, size.width, size.height, this); 
    FontMetrics fm = g.getFontMetrics(); 
    int x = (getWidth() - fm.stringWidth("String Value To Set"))/2; 
    int y = ((getHeight() - fm.getHeight())/2) + fm.getAscent() ; 
    g.drawString(String Value To Set, x, y); 
} 
0

ich für JButton Hintergrundbild setze

Das ist keine Notwendigkeit, individuelle Malerei zu tun. Sie fügen der Schaltfläche einfach ein Symbol hinzu und die Schaltfläche wird das Bild malen.

Wenn du einen Text auf dem Bild wollen, dann verwenden Sie nur die Eigenschaften der Schaltfläche:

button.setHorizontalTextPosition(...); 
button.setVerticalTextPosition(...); 
Verwandte Themen