【发布时间】:2018-07-07 00:47:03
【问题描述】:
这是我在这里的第一篇文章,请尽快。 我有一个带有 JLabel 的小 JFrame 窗口,其中图像作为所述 JFrame 的背景。 JFrame 也有 2 个 JButton。到目前为止,它运行良好,直到我决定添加 JComboBox。这个动作的结果是现在当我运行我的 JFrame 时它显示为空白,没有来自 JLabel 的背景图像,没有可见的 ComboBox,显示了 JButton。当我调整这个窗口的大小时,会出现 JLabel 背景图像,一切都很好,但应该没有调整大小。我在这里想念什么?我对 Swing 非常熟悉,并且正在为我的 java 类项目做“游戏”。这是截图和代码:
public class View_Startup extends JFrame {
JLabel lBackground;
JButton bStart,bExit;
JComboBox cbResolutions;
ImageIcon iBackground,iStart,iExit;
Image icon;
String resolutions[] = {"1280x720 HD","1366x768 WXGA","1600x900HD+","1920x1080 fullHD"};
public View_Startup() {
iBackground = new ImageIcon("xdddddddddd/resolution_background.jpg");
iStart = new ImageIcon("xddddddddddd/iStart2.png");
iExit = new ImageIcon("xdddddddddd/iExit2.png");
this.setSize(656,399);
this.setTitle("xddddddddd");
this.icon = Toolkit.getDefaultToolkit().getImage("C:xdddddddddd\\images.jpg");
this.setIconImage(icon);
this.setVisible(true);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice defaultScreen = ge.getDefaultScreenDevice();
Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds();
int x=(int) rect.getMaxX();
int y=(int) rect.getMaxY();
this.setLocation(x/2-328,y/2-199);
bStart = new JButton(iStart);
bStart.setBounds(490,240,150,50);
bStart.setOpaque(false);
bStart.setContentAreaFilled(false);
//bStart.setBorderPainted(false);
add(bStart);
bExit = new JButton(iExit);
bExit.setBounds(490,300,150,50);
bExit.setOpaque(false);
bExit.setContentAreaFilled(false);
//bExit.setBorderPainted(false);
add(bExit);
cbResolutions = new JComboBox(resolutions);
cbResolutions.setBounds(490,180,150,50);
add(cbResolutions);
lBackground = new JLabel(iBackground);
lBackground.setBounds(0,0,640,360);
add(lBackground);
}
}
【问题讨论】:
-
您遇到了一系列问题。
setLayout(null)将是您的第一个。您的组件的 Z 排序将是您的第二个。 Have a look at this example 看看你应该如何使用JLabel作为背景,以及为什么你不应该使用它以及更好的解决方案 -
请查看编辑以回答
标签: java swing jlabel jcombobox invisible