java - 如何在 JFrame 中设置图像的位置

标签 java swing jframe layout-manager

我试图在 JFrame 中设置图像的位置。我以为 label.setLocation(100, 100); 会将图像的位置设置为 100, 100(左上角),但无论我放在哪里,它似乎都没有做任何事情.我什至尝试过 panal.setLocation(100, 100)。两者什么都不做,我没有错误并且图像确实出现但是在 0, 0。我做错了什么?这是我的代码:

import javax.swing.*;  

public class DisplayImage {  
    public DisplayImage() {  
        JFrame frame = new JFrame("Display Image");  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

        JPanel panel = (JPanel)frame.getContentPane();  

        JLabel label = new JLabel();  
        label.setIcon(new ImageIcon("src/img/school.png"));
        label.setLocation(100, 100);
        panel.add(label);  

        frame.setLocationRelativeTo(null);  
        frame.pack();  
        frame.setVisible(true);  
    }  

    public static void main (String args[]) {  
        SwingUtilities.invokeLater(new Runnable() {  
            public void run() {  
                new DisplayImage();  
            }  
        });  
    }  
}  

最佳答案

默认情况下,JFrame 使用 BorderLayout。当您将标签添加到框架时,标签将添加到 BorderLayout 的中心。布局管理器将覆盖该位置。

一个简单的解决方案是将 EmptyBorder 添加到标签,顶部/左侧插图为 100。然后不是将标签添加到中心,而是将标签添加到 NORTH。代码将类似于:

label.setBorder( new EmptyBorder(...) );
panel.add(label, BorderLayout.SOUTH);

作为一般规则,您不应尝试指定组件的确切位置。让布局经理做好他们的工作。

关于java - 如何在 JFrame 中设置图像的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660132/

相关文章:

java - 如果查询执行成功或失败,resultSet2 的值是多少

java - JTable 双重格式化

java - 在eclipse中播放ogg文件

java - java中CardLayout的父级错误

java - 使用 JFrame 进行边框布局

java - 如何将一个窗口附加到另一个窗口

java - 如何在java中将4字节数组转换为 float

java - 更新子文档的所有元素,其中子文档是列表的一部分

java - 字符串数组中每个元素的平均长度

java - 在 Java JFrame 中绘制多个正方形并访问其中的每一个?