问题
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.
Thanks.
回答1:
Consider leaving the title left-justified...but...this will get you near the center. For resizable frames, you need to rewrite the title on resize.
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");
回答2:
Adapting the answer's source of @Java42, I did a "workaround" to adjust title when resizing 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();
});
}
}
Working:
回答3:
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
getSystemLookAndFeelin Windows OScreate undecorated
JFrameby addingJPanel(simulatedToolbar) with JButtons (JButtons with icons simulating standards buttons )
回答4:
I don't know that you can without using a complicated scheme. If it's to your liking, you could apply a titled border with centered text to the frame's content pane.
回答5:
center align the title in a jFrame is very easy in netbeans, what u need to do is below:
1.
2.
- run your app.
来源:https://stackoverflow.com/questions/9662393/how-to-center-align-the-title-in-a-jframe