[英]Why isn't this JLabel in the center of this Java application?
新手Java程序员在这里:
每当我遇到问题时,我都不想问问题,但是我看不到应该如何使用绿色的“ Hello World”标签进入JPanel的中心。 这是我的代码:
package game;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Javagame extends JPanel implements ActionListener{
protected JButton b1;
private JLabel label;
public Javagame() {
b1 = new JButton("Button!");
b1.setActionCommand("change");
b1.addActionListener(this);
add(b1);
label = new JLabel("Hello World!", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 20));
label.setForeground(new Color(0x009900));
add(label, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
if ("change".equals(e.getActionCommand())) {
label.setText("Hello Universe!");
b1.setActionCommand("changeBack");
}
if ("changeBack".equals(e.getActionCommand())) {
label.setText("Hello World!");
b1.setActionCommand("change");
}
}
private static void createWindow(){
JFrame frame = new JFrame("Javagame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(500,500));
Javagame newContentPane = new Javagame();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createWindow();
}
}
BorderLayout.CENTER
在add()
似乎不起作用。 任何帮助,将不胜感激,谢谢!
JLabel
位于父容器的中心,文本在标签内对齐。
尝试...
label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalAlignment(JLabel.CENTER);
BorderLayout.CENTER似乎不起作用
JPanel的默认布局是FlowLayout。 您需要将布局设置为BorderLayout。
另外,您需要将按钮添加到BorderLayout的NORTH。
然后,按钮将出现在顶部,标签将居中。
添加标签时,请使用FlowLayout字段。
//Code apove
label = new JLabel("Hello World!", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 20));
label.setForeground(new Color(0x009900));
add(label, FlowLayout.CENTER);//!!
//Code under
因为您尚未更改面板中的布局,所以请勿使用BorderLayout。
如果您真的想使用BorderLayout而不是FlowLayout,请在其中添加setLayout()命令。
//Code apove
label = new JLabel("Hello World!", SwingConstants.CENTER);
label.setFont(new Font("Arial", Font.BOLD, 20));
label.setForeground(new Color(0x009900));
setLayout(new BorderLayout()); //!!
add(label, BorderLayout.CENTER);
add(b1,BorderLayout.????); //Edited
//Code under
@Edit-在setLayout()方法之后也添加按钮,或者在设置面板时在开头设置布局
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.