JavaSwing:将图像锚定到JFrame的角落

JavaSwing:将图像锚定到JFrame的角落,java,swing,jframe,Java,Swing,Jframe,我正在使用eclipse和Google的WindowBuilderPro插件来设计一个swing应用程序。我已经使用组布局构建了功能齐全的JFrames及其组件。我现在尝试在所有JFrame的角上添加一个图像。当我尝试从WindowBuilder Pro插件进行拖放时,会显示所有组件,而JFrame本身会移动并调整大小 有没有办法将这些图像以编程方式或拖放方式放置在我的框架的各个角落,并将它们锚定在那里,以便当JFrame调整大小时,图像保留在各自的角落 我尝试过的Programattic代码:

我正在使用eclipse和Google的WindowBuilderPro插件来设计一个swing应用程序。我已经使用组布局构建了功能齐全的JFrames及其组件。我现在尝试在所有JFrame的角上添加一个图像。当我尝试从WindowBuilder Pro插件进行拖放时,会显示所有组件,而JFrame本身会移动并调整大小

有没有办法将这些图像以编程方式或拖放方式放置在我的框架的各个角落,并将它们锚定在那里,以便当JFrame调整大小时,图像保留在各自的角落

我尝试过的Programattic代码:

BufferedImage image = ImageIO.read(getClass().getResource("image path"));
JLabel label = new JLabel(new ImageIcon(image));
label.setBounds(0,0,100,100);
add(label);
这对左上角效果很好,但我似乎不知道如何将其他图像锚定到其他角

提前感谢

编辑:
我希望所有现有组件保持原样,并将图像嵌入所有现有组件后面的JFrame角落。

您可以计算角落坐标;基本概念是依靠组件的宽度/高度;例如:

x、 y坐标

w、 角分量标度

让我们计算一些角点的坐标…

左上角:x=0;y=0;w=100;h=100

右上角:x=parentComponent.width-w;y=0;w=100;h=100

右下角:x=parentComponent.width-w; y=父组件高度-h;w=100;h=100

。。。因此,如您所见,您可以将alg基于父组件的宽度/高度,例如;在您的情况下,它就像一个代码

label.getParent();


如果有帮助,请报告不要使用空布局和setBounds()!!!使用适当的布局管理器

例如,JFrame的默认布局管理器是BorderLayout。因此,您可以创建第二个JPanel,它也使用BorderLayout。然后可以将图像添加到面板的西部和东部。然后将面板添加到框架的北部


有关更多信息,请参阅。实际上,请阅读版面管理器的整个部分。

如果您使用的是
setBounds
方法,您可能需要知道您给标签的位置是最终位置,并且在将
componentListener
添加到框架并调用
componentresistized
方法之前无法更改,每次调整框架大小时,必须为标签设置新位置

然而,这并不是解决这个问题的最佳方法,我告诉你不要使用这种方法,希望其他人(或专家)给出另一个更好的答案。

但无论如何这是不可能的看看这个例子:

    private JLabel lable ;
    private Icon img;
   // default constructor 
    public AnchoreImage(){

        setVisible(true);
        setDefaultCloseOperation(3);

        img = new ImageIcon(AnchoreImage.class.getClass().getResource("/path to image"));
        lable = new JLabel("text",img, JLabel.LEADING);
        lable.setBounds(getWidth()-img.getIconWidth(), 20, img.getIconWidth(),img.getIconWidth());
        add(lable);
        addComponentListener(new ComponentAdapter() {

            @Override
            public void componentResized(ComponentEvent e) {
                lable.setLocation(getWidth()-(img.getIconWidth()+20), 20);
            }
        });
        pack();
        setSize(400,400);
        setLayout(null);
    }