Java JPanel坐标系

Java JPanel坐标系,java,window,coordinates,jlabel,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();

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

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


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

我看不到您在代码中的某个地方设置了JPanel的布局管理器。 使用Swing时,每个容器都有一个LayoutManager,用于处理在相应容器上放置组件的问题(有关如何使用布局管理器的信息,请参阅)

如果要将组件放置在固定坐标处(如本例中),则应在JPanel上设置绝对布局:

panel.setLayout(null);
然后可以使用setBounds方法放置要添加的构件:

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

虽然我会使用布局管理器来实现更大的用户界面。

谢谢,这帮了大忙!我终于让这个程序开始工作了!:)