12
votes

Comment centrer Aligner le titre dans un jframe?

J'ai un jframe avec un titre . Je veux Centre Aligner le titre , de sorte qu'il apparaisse dans le centre du titre du jframe . .

merci.


0 commentaires

5 Réponses :


0
votes

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.


0 commentaires

2
votes
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 )

0 commentaires

10
votes

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 commentaires

+1, je suppose que c'est la bonne réponse, mais pour la redoutable de je suppose qu'il peut écrire un addwindowstatelistener (...) pour faire ce travail :-)



7
votes

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();
        });
    }
}


0 commentaires

0
votes

Centre Alignez le titre dans un JFRAME est très facile dans NetBeans, ce que vous devez faire est ci-dessous:

1.

 Entrez la description de l'image ici

2.

 Entrez la description de l'image ici

  1. Exécutez votre application.

     Entrez la description de l'image ici


0 commentaires