Używam metody drawString()
do rysowania ciągów przy użyciu grafiki, ale chcę wycentrować tekst w prostokącie. Jak mam to zrobić?Tekst w środku Java w prostokącie
Odpowiedz
Używałem tego do centrum tekst na JPanel
Graphics2D g2d = (Graphics2D) g;
FontMetrics fm = g2d.getFontMetrics();
Rectangle2D r = fm.getStringBounds(stringTime, g2d);
int x = (this.getWidth() - (int) r.getWidth())/2;
int y = (this.getHeight() - (int) r.getHeight())/2 + fm.getAscent();
g.drawString(stringTime, x, y);
Centrowanie tekstu w pionie jest nieco bardziej zaangażowane, z powodu tekstu wejście i sposób renderowania tekstu. Z pamięci powinno być bardziej podobne do y = ((getHeight() - fm.getHeight())/2) + fm.getAscent(); ... Spróbuj narysować linię wzdłuż linii środkowej komponentów i porównaj obie metody, jeśli moja pamięć dobrze mi służy, wierzę, że to będzie lepiej wyśrodkowane ... +1 – MadProgrammer
Masz rację. Poprawiłem odpowiedź. –
Możesz także chcieć przeczytać [to] (http://stackoverflow.com/questions/1055851/how-do-you-draw-a-string-centered-vertically-in-java) – MadProgrammer
Centrowanie tekstu ma dużo „Opcje”. Czy koncentrujesz się całkowicie lub na podstawie linii bazowej ??
Osobiście wolę absolutną pozycję środkową, ale to zależy od tego, co robisz ...
public class CenterText {
public static void main(String[] args) {
new CenterText();
}
public CenterText() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int height = getHeight();
String text = "This is a test xyx";
g.setColor(Color.RED);
g.drawLine(0, height/2, getWidth(), height/2);
FontMetrics fm = g.getFontMetrics();
int totalWidth = (fm.stringWidth(text) * 2) + 4;
// Baseline
int x = (getWidth() - totalWidth)/2;
int y = (getHeight() - fm.getHeight())/2;
g.setColor(Color.BLACK);
g.drawString(text, x, y + ((fm.getDescent() + fm.getAscent())/2));
// Absolute...
x += fm.stringWidth(text) + 2;
y = ((getHeight() - fm.getHeight())/2) + fm.getAscent();
g.drawString(text, x, y);
}
}
}
+1 dla kontrastu. – trashgod
- 1. ImageMagick - Tekst w prostokącie
- 2. iPhone - Jak narysować tekst w środku prostego
- 3. Programowanie Androida: jak narysować tekst wielowierszowy w prostokącie?
- 4. Punkt obrotu w prostokącie
- 5. Narysuj otwór w prostokącie za pomocą SpriteKit?
- 6. Jak wyrównać obrócony tekst w środku div
- 7. Moment.js Dołącz tekst w środku formatu daty
- 8. Znaleźć miejsce kursora w prostokącie
- 9. UITextField tekst nie pojawia się na środku
- 10. CSS Vertical align tekst na środku obrazu
- 11. Tekst w Androidzie TextView nie zostanie umieszczony na środku.
- 12. Pokaż tekst na środku ekranu terminala w golang
- 13. Przycisk Android Umieść obraz w środku i tekst na dole
- 14. Jak mogę skalować kreskowania rysowane w prostokącie?
- 15. Div poziomo w środku i w pionie w środku
- 16. Instrukcja w środku konkatenacji?
- 17. Jak umieścić ikonę QTableWidgetItem w środku komórki?
- 18. Jak analizować tekst quasi-html w java?
- 19. Utwórz tekst pogrubiony w języku Java Android
- 20. tekst Rysunek z zarysem w java
- 21. Narysuj tekst w centrum
- 22. Pokaż informacje w środku połączenia
- 23. Kątowa data w środku modalnego
- 24. Tworzenie linię kółko w środku
- 25. Jak wyciąć łańcuch w środku?
- 26. Punkt załączyć w środku wykresu
- 27. Three.js: Obrót w środku obiektu
- 28. Jak upewnić się, że zaznaczony tekst opcji wyrównuje się w środku w IE?
- 29. Jak pisać na środku pliku w C++?
- 30. Java JOptionPane tekst domyślny
Twoje tytuł członkowskich, używasz 'JTextField', ale nie swoimi pytanie. Więc co jest prawdą? – Mordechai
Twój tytuł to: * Tekst środkowy Java w polu tekstowym *, ale twój post mówi: * Używam metody 'drawString()' do rysowania napisów w Grafice, ale chcę wycentrować mój tekst w prostokącie. Jak mam to zrobić? * Jak to się dzieje? –
Aby poprawić moje pytanie: Mam gdzieś w ramce JFrame .... Chcę rysować ciąg wyśrodkowany w tym prostokącie. Jak mam to zrobić? –