La mia classe GraphicButton.java
crea un numero personalizzato JButton
con un determinato testo e carattere e un bordo rettangolare. Il mio problema è che c'è qualche spazio in più tra l'ultimo carattere nella stringa e la fine del bordo che vorrei rimuovere.Come rimuovere lo spazio dalla fine di una stringa visualizzata con Grafica in Java?
Ecco cosa un'istanza di una GraphicButton
assomiglia con la stringa "PLAY" e il tipo di carattere FFF Forward (Diretto Download Link) aggiunto ad una JFrame
. La riga rossa è lo spazio che desidero rimuovere.
Ecco il codice che sto utilizzando (JFrame
creazione e la configurazione omesso):
GraphicButton.java
:
public class GraphicButton extends JButton {
private static final long serialVersionUID = 1L;
//Fields
private String text;
private Font font;
//Constructor
public GraphicButton(String text, Font font) {
super(text);
this.text = text;
this.font = font;
//Setting preferred size here.
this.setPreferredSize(new Dimension(this.getFontMetrics(font).stringWidth(text), this.getFontMetrics(font).getAscent()));
}
@Override
public void paintComponent(Graphics g) {
g.setFont(this.font);
//Draw text
g.drawString(this.text, 0, this.getHeight());
//Draw border
g.drawRect(0, 0, this.getWidth(), this.getHeight());
}
}
Sono in esecuzione Eclipse su un Mac con Java 1.8.
Quello spazio è lo spazio tra le lettere. Immagino che tu possa disegnare "PLAY" su una BufferedImage, trovare lo spazio più a destra, rimuovere lo spazio e passare la BufferedImage modificata come ImageIcon al JButton. –
Mi piace il tuo suggerimento @GilbertLeBlanc, è solo che non so come fare ciò che stai suggerendo. Per favore aggiungi qualcosa alla tua risposta per mostrarmi cosa fare. – MasterBlaster
Leggi il mio articolo [Java Swing Marquee] (http://java-articles.info/articles/?p=681), per vedere come manipolo una BufferedImage. –