Java JPanel坐标系

时间:2012-06-03 19:39:49

标签: java window coordinates jlabel

我无法显示此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);
}
}

2 个答案:

答案 0 :(得分:1)

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

无论如何,您不必根据硬编码的数字放置组件,而是从长远来看,您可以更好地使用布局管理器,并让它们设置首选的组件大小和位置。

答案 1 :(得分: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);

Althogh我会使用布局管理器来获得更大的UI。

相关问题