问题描述
我正在尝试制作一个应用程序,该应用程序显示一个 JLabel 和一个按钮,如果单击该按钮会切换到另一个 jPanel。出于某种原因,我的 JLabel 在任何一种情况下都没有显示。我很感激专家的眼光来查看我的代码,看看我做错了什么。提前致谢。
HomeScreenUI(){
//frame
JFrame frame = new JFrame("Opisa");
//panels,one before button click and one after
JPanel panel = new JPanel();
JPanel panelAfterButtonClick = new JPanel();
panel.setLayout(null);
panelAfterButtonClick.setLayout(null);
//jlabel that isnt displaying + dimensions
JLabel label = new JLabel("Opisa");
Dimension size = label.getPreferredSize();
label.setBounds(100,100,size.width,size.height);
label.setFont(new Font("Helvetica",Font.PLAIN,70));
//second jlabel that isn't displaying
JLabel label2 = new JLabel("Opisa");
Dimension size4 = label2.getPreferredSize();
label2.setBounds(100,size4.width,size4.height);
label2.setFont(new Font("Helvetica",70));
//adding the labels to the panels
panel.add(label);
panelAfterButtonClick.add(label2);
//button that is displaying both before and after
JButton button = new JButton("Click Me..");
JButton buttonAfterClick = new JButton("Clicked Me..");
//dimensions
Dimension size2 = button.getPreferredSize();
button.setBounds(100,size2.width,size2.height);
Dimension size3 = button.getPreferredSize();
buttonAfterClick.setBounds(100,size3.width,size3.height);
//adding the buttons to the jpanel
panel.add(button);
panelAfterButtonClick.add(buttonAfterClick);
//function that changes the panel after the button is clicked
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
frame.setContentPane(panelAfterButtonClick);
frame.invalidate();
frame.validate();
}
});
//adding the panel to the frame and setting the size
frame.add(panel);
frame.setSize(1000,800);
frame.setVisible(true);
}
解决方法
检查标签边界,更具体地说是它的大小...尝试设置一些固定值(足以显示其内容,如 setBounds(100,100,250,80)
)。
在更改字体大小之前正在检索首选大小,因此它不足以显示大字符。首先尝试更改字体。