如何解决设置图像背景 java swing
我正在尝试将图像设置为背景,但我不确定此代码本身有什么问题..您能否在这里提供帮助并指出可以更改的内容?当我运行它时,它给了我一个空白的背景,没有预期的结果。
public
class MenuFrame extends JFrame {
public MenuFrame(){
generateMenuFrame();
}
public void generateMenuFrame()
{
JLabel background;
JFrame menuFrame = new JFrame("Koronawirus AntiPlague - Menu");
try {
menuFrame.setIconImage(ImageIO.read(MenuFrame.class.getResourceAsStream("resources/images/Icon.png")));
} catch (IOException ex) {
ex.printStackTrace();
}
ImageIcon backgroundImage = new ImageIcon("resources/images/MenuBackground.png");
background = new JLabel("",backgroundImage,JLabel.CENTER);
background.setBounds(0,getWidth(),getHeight());
menuFrame.add(background);
menuFrame.setSize(700,400);
menuFrame.setVisible(true);
menuFrame.setResizable(false);
menuFrame.setLocationRelativeTo(null);
menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
更新:
谢谢大家的建议。正如安德鲁建议的那样,我决定使用一个没有扩展的实例,而且我使用了paintComponent方法的覆盖:
public
class MenuFrame {
private JPanel contentPane;
public MenuFrame(){
generateMenuFrame();
}
public void generateMenuFrame()
{
JFrame menuFrame = new JFrame("Koronawirus AntiPlague - Menu");
try {
menuFrame.setIconImage(ImageIO.read(MenuFrame.class.getResourceAsStream("resources/images/Icon.png")));
} catch (IOException ex) {
ex.printStackTrace();
}
menuFrame.setSize(700,400);
menuFrame.setVisible(true);
menuFrame.setResizable(false);
menuFrame.setLocationRelativeTo(null);
menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel() {
public void paintComponent(Graphics g) {
Image img = Toolkit.getDefaultToolkit().getImage(
MenuFrame.class.getResource("resources/images/MenuBackground.jpg"));
g.drawImage(img,this.getWidth(),this.getHeight(),this);
}
};
menuFrame.setContentPane(contentPane);
}
}
解决方法
background.setBounds(0,getWidth(),getHeight());
由于您正在扩展 JFrame 并调用框架的 getWidth() 和 getHeight() 方法,因此上述代码会将标签的大小设置为 (0,0)。所有 Swing 组件的默认大小都是 (0,0),所以没有什么可绘制的。
不要试图玩弄标签的界限。
标签的大小会自动设置为图片的大小。
然后你应该使用:
//menuFrame.setSize(700,400);
menuFrame.pack();
所以框架的大小可以正确显示标签及其图像。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。