J'ai un jframe avec un titre fort>. Je veux Centre Aligner le titre Strong>, de sorte qu'il apparaisse dans le centre merci. p>
5 Réponses :
Je ne sais pas que vous pouvez sans utiliser un schéma compliqué. Si c'est à votre goût, vous pouvez appliquer une frontière intitulée avec du texte centré sur le volet de contenu du cadre. P>
I have a JFrame with a Title. I want center align the title, so that it appears in the middle of the JFrame's title. simple not possible to centering narrarive in the JFrames TitleBar, this container came from Native OS dirty hack are possible by implements getSystemLookAndFeel in Windows OS create undecorated JFrame by adding JPanel (simulated Toolbar) with JButtons (JButtons with icons simulating standards buttons )
envisagez de laisser le titre justifié de gauche ... mais ... cela vous fera venir près du centre. Pour des cadres redimensionnables, vous devez réécrire le titre sur redimensionner.
JFrame t = new JFrame(); t.setSize(600,300); t.setFont(new Font("System", Font.PLAIN, 14)); Font f = t.getFont(); FontMetrics fm = t.getFontMetrics(f); int x = fm.stringWidth("Hello Center"); int y = fm.stringWidth(" "); int z = t.getWidth()/2 - (x/2); int w = z/y; String pad =""; //for (int i=0; i!=w; i++) pad +=" "; pad = String.format("%"+w+"s", pad); t.setTitle(pad+"Hello Center");
+1, je suppose que c'est la bonne réponse, mais pour la redoutable de je suppose qu'il peut écrire un addwindowstatelistener (...) code> pour faire ce travail :-)
adapter le Source de réponse de @ java42, j'ai fait une "contournement" pour ajuster le titre lors de la redimensionnement de jframe:
import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.FontMetrics; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; public class JFrameTitleCenter { public void createAndShowGUI() { JFrame frame = new JFrame(); frame.setPreferredSize(new Dimension(300, 200)); frame.setTitle("Hello Center"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { titleAlign(frame); } }); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } private void titleAlign(JFrame frame) { Font font = frame.getFont(); String currentTitle = frame.getTitle().trim(); FontMetrics fm = frame.getFontMetrics(font); int frameWidth = frame.getWidth(); int titleWidth = fm.stringWidth(currentTitle); int spaceWidth = fm.stringWidth(" "); int centerPos = (frameWidth / 2) - (titleWidth / 2); int spaceCount = centerPos / spaceWidth; String pad = ""; pad = String.format("%" + (spaceCount - 14) + "s", pad); frame.setTitle(pad + currentTitle); } public static void main(String[] args) { EventQueue.invokeLater(() -> { new JFrameTitleCenter().createAndShowGUI(); }); } }