-1

我无法显示此 JLabel,其中包含特定坐标 (40,80) 处的图像。谁能告诉我我在这里做错了什么?

import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;

public class Window extends JFrame{
//the pictures
JLabel guy = new JLabel(new ImageIcon("tester.gif"));
JPanel panel = new JPanel();

Window(){

    super("WindowTitleThing");
    setSize(700,600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    guy.setAlignmentX(40);
    guy.setAlignmentY(80);

    add(panel);
    panel.add(guy);

    setVisible(true);
}
}
4

2 回答 2

1

这不是 setAlignmentX 和 setAlignmentY 的工作方式或它们的用途。它们获得 0.0f、0.5f 或 1.0f 的浮点值,以帮助容纳组件的容器决定放置它的位置。请阅读这些方法的 API。

无论如何,与其根据硬编码的数字放置组件,从长远来看,您会发现使用布局管理器会更好,并让它们设置组件的首选大小和位置。

于 2012-06-03T19:46:30.433 回答
1

我没有看到您在代码中的某处设置了 JPanel 的布局管理器。当您使用 Swing 时,每个容器都有一个 LayoutManager 来处理在相应容器上放置组件(请参阅http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html了解如何使用布局管理器)。

如果您想将组件放置在固定坐标处,就像您的情况一样,您应该在 JPanel 上设置绝对布局:

panel.setLayout(null);

然后您可以使用 setBounds 方法放置要添加的组件:

guy.setBounds(x,y,width,length);

虽然我会为更大的 UI 使用布局管理器。

于 2012-06-03T19:47:44.707 回答