【发布时间】:2015-07-09 06:18:16
【问题描述】:
在我开始之前,让我说我对 Java 很陌生。我提前为我的无知道歉。
因此,我创建了一个 JFrame,将图像加载为 ImageIcon,并将其转换为 JLabel,然后将其添加到 Frame 中。问题是,控制标签的大小和位置很痛苦。
我找到了这个解决方案:
final ImageIcon image = new ImageIcon(loadFrames.class.getResource("/images/testimage.png"));
JLabel imageLabel = new JLabel(image){
@Override
public void paintComponent (Graphics g) {
super.paintComponent (g);
if (image != null) {
g.drawImage (image.getImage(), 300, 0, image.getIconWidth(), image.getIconHeight(), null);
}
}
};
gameFrame.add(imageLabel);
imageLabel.setVisible(true);
gameFrame.setVisible(true);
如您所见,我在网上找到了一个响应,其中显示了 Graphics 对象的用法。我不知道它是如何工作的或为什么会工作,但确实如此。问题是,图像被绘制了两次。一次在原点(中心)和一次在 (300,0)。
感谢您提供有关如何阻止它在原始位置绘制的任何反馈。如果您知道一种更简单的方法来调整标签的大小和位置,也请说出来。我没有使用 LayoutManager。
【问题讨论】:
-
避免使用
null布局,像素完美的布局是现代用户界面设计中的一种错觉。影响组件单个尺寸的因素太多,您无法控制。 Swing 旨在与核心布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正