我使用 JLabel
在 JFrame
中查看图像。我从一个带有 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()
也会给面板一个尺寸。
如果希望面板保持该大小,请确保它的父容器有一个符合首选大小的布局管理器,例如 FlowLayout
或 GridBagLayout
。如果您希望面板被拉伸(stretch),请确保它的父容器具有忽略首选大小的布局管理器,例如 BorderLayout
或 GridLayout
参见 Performing Custom Painting有关绘画的更多信息。
参见 Laying Out Components Within a Container了解有关布局管理器(您应该使用)的更多信息。另见 Why is it frowned upon to use a null layout in SWING?和 What's wrong with the Null Layout in Java?
关于java - 如何在 JFrame 中设置 JLabel 的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104015/