我有一个JFrame和一个ImageIcon作为JLabel我希望完全脱离JFrame。
代码:
JFrame frame = new JFrame("test");
frame.setSize(1000, 1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
BufferedImage bf = ImageIO.read(new File(FILEPATH));
img = new JLabel(new ImageIcon(bf));
} catch (IOException e) {
e.printStackTrace();
}
frame.getContentPane().add(img);
img.setBorder(new EmptyBorder(0, frame.getContentPane().getWidth(), 0, 0));
此代码仅使JLabel /图像显示在屏幕的一半。我可以通过将EmptyBorder
的左参数设置为frame.getContentPane.getWidth() * 2
来轻松修复它,但我只是想知道为什么它似乎将插入距离减半。根据我的测试,如果JLabel包含ImageIcon,则只将其减半。如果它包含文本,那么insets就像它们应该的那样工作。我只测试了文本和ImageIcon。
答案 0 :(得分:1)
不确定具体计算是什么,但默认情况下,Icon位于可用空间的中心。
正如您所注意到的那样,当只显示图标时,图标似乎向左移动了图标大小的一半。
如果您同时拥有图标和文字(或仅包含文字),则不会发生这种情况。
一个解决方案是:
img = new JLabel(new ImageIcon(bf), SwingConstants.LEFT);