【发布时间】:2017-05-27 10:48:39
【问题描述】:
我正在为一个项目创建航班预订系统,但应用程序的 GUI 出现问题。我正在使用 CardLayout 来管理该程序的多张卡片。
在登录卡中,我尝试添加背景图像,但输入字段显示在图像下方。
程序的代码是
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;
import java.net.*;
public class CardPanel {
public static void main(String[] args) {
try {
CardLayout cardLayout = null;
JFrame frame = new JFrame("Welcome");
JPanel contentPane = new JPanel(cardLayout);
URL url = new URL("https://i.stack.imgur.com/P59NF.png");
BufferedImage img = ImageIO.read(url);
ImageIcon imageIcon = new ImageIcon(img);
JLabel logo = new JLabel(imageIcon);
JPanel buttonsPanel = new JPanel();
JButton login = new JButton("Login");
buttonsPanel.add(login);
contentPane.setLayout(new BorderLayout(10, 15));
contentPane.add(logo, BorderLayout.NORTH);
contentPane.add(buttonsPanel, BorderLayout.SOUTH);
frame.add(contentPane, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
还附上了应用程序的屏幕截图 (http://i.imgur.com/PkjblPu.png)。
我希望按钮位于背景图像上方。
【问题讨论】:
-
但输入字段显示在图像下方那么它们应该出现在哪里以及如何出现?
-
@Reimeus 我想要图像作为背景和上面的输入字段。
-
尝试在卡片布局中使用两个面板重新创建它,每个面板都有一个组件。例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。如需尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。
-
顺便说一句 - 卡片布局实际上与眼前的问题有关吗?从屏幕截图中可以看出,图像在单个面板中向下推动组件(没有卡片布局。仔细关注问题代码而不是转储整个代码。
-
@AndrewThompson 我已将代码更新为仅包含相关部分,但是无法热链接图像。感谢您的建议和帮助。
标签: java swing awt background-image cardlayout