java - 如何在 JFrame 中设置 JLabel 的边界?

标签 java swing jlabel imageicon

我使用 JLabelJFrame 中查看图像。我从一个带有 ImageIcon 的文件中加载它。

JFrame frame = new JFrame(String);
frame.setLocationByPlatform(true);
frame.setSize(500, 500);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel cpu = new JLabel(new ImageIcon(String));
cpu.setLocation(20, 20);
cpu.setSize(20, 460);
frame.add(cpu);
frame.setVisible(true);

我无法设置 JLabel 的位置和大小,因为它是自动完成的

我必须手动设置这些值,因为我想截断图像(垂直进度条)。

最佳答案

一种方法是只绘制图像:

final ImageIcon icon = new ImageIcon(path);
JPanel panel = new JPanel() {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), this);
    }
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(500, 500);
    }
};
frame.add(panel); 

drawImage 中的getWidth()getHeight() 将强制图像拉伸(stretch)面板的大小。 getPreferredSize() 也会给面板一个尺寸。

如果希望面板保持该大小,请确保它的父容器有一个符合首选大小的布局管理器,例如 FlowLayoutGridBagLayout。如果您希望面板被拉伸(stretch),请确保它的父容器具有忽略首选大小的布局管理器,例如 BorderLayoutGridLayout

关于java - 如何在 JFrame 中设置 JLabel 的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104015/

相关文章:

java - 当 JLabel 出现时,它会移动其余组件

java - 根据同一 Jframe 中另一个面板的 Jbutton 更改面板的 JLabel

java - 如果我不在扩展类中调用可选的 super 方法或构造函数会怎样?

java - Apache POI : change page format for Excel worksheet

java - 如何将可点击的文本插入到 JTextPane 中?

java - JFileChooser 在详细 View 中显示无效文件大小

java - 如何动态添加元素到 JList/DefaultListModel

java - 由于鼠标事件无效,如何将第一个 JLabel 背景颜色分配给下一个 JLabel?

java - 如何使用ehcache或JCS作为队列或流式缓存?

java - 如何在 Java Web 应用程序中实现基于 PKI 证书的身份验证