【发布时间】:2018-07-22 18:39:51
【问题描述】:
所以我有一个缓冲图像加载到JLabel。
当我启动程序时,只显示图像,但不显示按钮。
我尝试将JButtons 直接添加到JLabel,结果相同。但是,如果我将buttonPanel 直接添加到框架中,按钮最终会可见。但是,如果我将JLabel 直接添加到框架中,然后添加buttonPanel,则只有按钮可见。
public void setProp(){
//frame properties
mainFrame.setSize(1200, 845); //JFrame
mainFrame.setVisible(false);
mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//layout properties
buttonLayout.setHgap(100); //GridLayout
buttonLayout.setColumns(1);
buttonLayout.setRows(6);
//panel properties
buttonPanel.setLayout(buttonLayout);
buttonPanel.setVisible(true);
buttonPanel.setOpaque(false);
//button properties
newGame.setOpaque(false);
newGame.setContentAreaFilled(false);
newGame.setBorderPainted(false);
newGame.setForeground(Color.WHITE);
newGame.setFont(buttonFont);
newGame.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//launch designated method
}
});
loadGame.setOpaque(false);
loadGame.setContentAreaFilled(false);
loadGame.setBorderPainted(false);
loadGame.setForeground(Color.WHITE);
loadGame.setFont(buttonFont);
loadGame.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//launch designated method
}
});
credits.setOpaque(false);
credits.setContentAreaFilled(false);
credits.setBorderPainted(false);
credits.setForeground(Color.WHITE);
credits.setFont(buttonFont);
credits.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//launch designated method
}
});
exit.setOpaque(false);
exit.setContentAreaFilled(false);
exit.setBorderPainted(false);
exit.setForeground(Color.WHITE);
exit.setFont(buttonFont);
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
//background properties
background = importPic("D:/programming rescources/strategy game/resources/images/mmpic.JPG");
//adding components to mainFrame
buttonPanel.add(newGame); //adding all buttons onto JPanel with GridLayout
buttonPanel.add(loadGame);
buttonPanel.add(credits);
buttonPanel.add(exit);
background.add(buttonPanel);//this is the JLabel with the buffered image
mainFrame.add(background);
}
【问题讨论】:
标签: java swing jbutton jlabel layout-manager