gpt4 book ai didi

java - 多个 JPanel 在 JLayeredPane 中绘制图像

转载 作者:行者123 更新时间:2023-11-30 07:32:03 26 4
gpt4 key购买 nike

这是我的代码,当我将 JPanel 添加到 JLayeredPane 时,它​​无法显示任何图像。 当我需要将多个 jpanel 放在屏幕上时,我不知道如何显示它们

public class game extends JFrame {
private JLayeredPane layeredPane;
private GraphicPanel gui;
private gameWindows test;

public game(){


this.setTitle("gameVer0.01");
this.setUndecorated(true);
setLocationRelativeTo(this);
gui=new GraphicPanel("url");
test=new gameWindows("url");
this.setLayout(new BorderLayout());
layeredPane =new JLayeredPane();
layeredPane.setPreferredSize(new Dimension(1280, 720));


layeredPane.add(test, 100);
layeredPane.add(gui, 200);
layeredPane.setOpaque(true);
layeredPane.setVisible(true);
this.add(layeredPane,BorderLayout.CENTER);
setResizable(false);
setExtendedState(JFrame.MAXIMIZED_BOTH);
final GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
device.setFullScreenWindow(this);
device.setDisplayMode(new DisplayMode(1280,720,32,60));
this.setSize(400,400);
this.pack();
this.setVisible(true);


}
public static void main(String srg[]){

game window=new game();

new BasicListener(window);

}

}
class gameWindows extends JPanel {
public gameWindows(String url)
{
setPreferredSize(new Dimension(1280,720));
this.setVisible(true);
this.setBackground(Color.blue);
this.setOpaque(false);
}
Image image1,image2;
public void paintComponent(Graphics g) {
/* Call the original implementation of this method */
super.paintComponent(g);
try {
FileInputStream fi = new FileInputStream("C:\\Users\\casper\\Desktop\\123\\game test\\src\\data\\res\\background.png");
image1 = ImageIO.read(fi);
fi.close();
}
catch (Exception ex) {
System.out.println("No example.jpg!!");
}
g.drawImage(image1, 0,0, null);

}

}
class GraphicPanel extends JPanel
{
public GraphicPanel(String url)
{
this.setPreferredSize(new Dimension(800,600));
this.setVisible(true);
this.setBackground(Color.blue);
this.setOpaque(false);

}
@Override
public void paintComponent(Graphics g) {
/* Call the original implementation of this method */
super.paintComponent(g);
try {
FileInputStream fi = new FileInputStream("C:\\Users\\casper\\Desktop\\123\\game test\\src\\data\\res\\1.jpg");
image = ImageIO.read(fi);
fi.close();
}
catch (Exception ex) {
System.out.println("No example.jpg!!");
}

g.drawImage(image, 0, 0, null);
}
}

这个问题困扰了我一天

感谢所有受访者

最佳答案

JLayeredPane 使用空布局。因此,您负责设置添加到分层 Pane 中的任何组件的大小和位置。否则默认大小为 (0, 0),因此无需绘制任何内容。

阅读 Swing 教程中关于 How to Use Layered Panes 的部分用于工作示例。下载演示代码并测试它并确保您理解它。然后您可以修复您的代码。

关于java - 多个 JPanel 在 JLayeredPane 中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com