我最近编码了一个包含背景图片的系统主页。设置背景后,我创建的按钮无法正常显示。它只是在我使用鼠标并指向按钮的位置后出现。有人可以教我如何解决这个问题吗?感谢您的帮助。代码如下:
public class HomePage扩展了JFrame {
private JPanel button = new JPanel();
private JButton time = new JButton("Bus Schedule");
private JButton reserve = new JButton("Booking");
private JButton info = new JButton("About Us");
Container con = getContentPane();
public HomePage(){
setTitle("Bus Reservation System");
setSize(650,500);
setLocation(360,100);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBackground();
setButton();
}
public void setBackground(){
JLabel background = new JLabel(new ImageIcon("C:/User/Desktop/Assignment/bg.jpg"));
con.add(background);
background.setLayout(new FlowLayout());
con.add(button);
}
public void setButton(){
Font but = new Font("Serif" , Font.ITALIC , 20);
info.setFont(but);
time.setFont(but);
reserve.setFont(but);
button.add(info);
button.add(time);
button.add(reserve);
con.add(button);
}
答案 0 :(得分:1)
简单错误(可能是拼写错误?),您正在设置JLabel
的布局,您打算设置Container
的布局。请con.setLayout(new FlowLayout());
代替background.setLayout(...)
另外,我相信你的文件路径不正确。为了测试,只需将文件放在项目中并执行类似" bg.jpg"的路径,如果可行,我们可以验证这一点。对我有用。我认为这是问题的原因是因为您指定了C:/Users
,但从未给出特定用户的文件夹。正确的路径是C:/Users/Your_name/Desktop/Assignment/bg.jpg
我不确定在那个路径部分,因为我不在你的系统上。但是,对我来说,如果我在我的日食中运行你的代码,这就解决了它。
编辑: 最后一点,图像并不是真正的"背景"使用当前代码的图像,因为它将使用FlowLayout移动它下面的按钮而不是它上面的按钮。您可能想要使用不同的布局。
答案 1 :(得分:1)
致电setVisible(true)
后,如果您执行某些操作,则必须手动validate()
或revalidate()
您的窗口。
在初始化所有所需设置和窗口成员资格后,只需调用setVisible()
即可。
/* setVisible(true); -- wrong place */
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBackground();
setButton();
setVisible(true); // proper place
答案 2 :(得分:0)
首先,如前所述,在{email: req.body.email}
上调用setVisible(true)
之前,应将所有组件添加到框架中。
JFrame
基于上面的代码,您将向内容窗格添加两个组件,因此GUI的层次结构如下所示:
JLabel background = new JLabel(new ImageIcon("C:/User/Desktop/Assignment/bg.jpg"));
con.add(background);
background.setLayout(new FlowLayout());
con.add(button);
在我看来,你希望你的GUI看起来像这样:
- frame
- content pane
- background
- button
所以你的代码应该是:
- frame
- content pane
- background
- button