基本上我还是Java的新手,并且在另一个上导入了一个简单的png,这对我自己是一个概念证明,我认为这是非常非正式的编码。尽管如此,我不知道如何移动第二个png,因为一旦应用程序打开,第二个png就会自动位于左上角的(0,0,0)
。
public class DisplayImage extends JFrame {
public DisplayImage() {
initUI();
}
private ImageIcon loadImage() {
ImageIcon ii = new ImageIcon("/Users/980057130/Desktop/pixil-frame-0.png");
return ii;
}
private ImageIcon loadImage1() {
ImageIcon iii = new ImageIcon("/Users/980057130/Desktop/Dynamic-Dungeon.png");
return iii;
}
private void initUI() {
ImageIcon ii = loadImage();
ImageIcon iii = loadImage1();
JLabel label = new JLabel(iii);
JLabel label1 = new JLabel(ii);
createLayout(label);
createLayout(label1);
label = new JLabel();
Container contentPane = getContentPane();
contentPane.add(new JScrollPane(label), "Center");
setTitle("Dynamic Dungeon");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
非常感谢您的帮助。
答案 0 :(得分:0)
欢迎堆栈溢出并访问友好的Java社区。很少有关于这个的指针。如果您对绘制图像感兴趣,那么在画布上绘画可能是一种更好的方法。使用标签更适合于布局GUI的领域,当您这样做时,通常不会尝试在彼此之上绘制标签。
您可以查看此问题Drawing Canvas on JFrame
涉及到有人在画布上绘画,您可以尝试使用它来绘制图像。
答案 1 :(得分:0)
如果要将一个图像居中放置在另一个图像上,最简单的方法是让布局管理器为您完成此操作。
所以基本逻辑是:
JLabel foreground = new JLabel( new ImageIcon() );
JLabel background = new JLabel( new ImageIcon(...) );
background.setLayout( new GridBagLayout() );
background.add(foreground, new GridBagConstraints() );
JScrollPane scrollPane = new JScrollPane( background );
add(scrollPane, BorderLayout.CENTER);
在具有默认约束的情况下使用GridBagLayout时,添加的任何组件将自动在可用空间中居中。
请注意,JLabel并非真正设计为容器,因此,只有在前景图像小于背景图像时,此方法才有效。