如何为JLabel内的图标图片设置间距及上下内边距?
JFrame图片间距问题解决办法
- 别直接给顶层JFrame加EmptyBorder,得针对图片所在的容器或图片标签本身做设置,以下是几种靠谱的方案:
- 用FlowLayout自带的间距参数
把图片放到JPanel里,初始化FlowLayout时直接指定水平和垂直间距,一步到位:// 20是图片间的水平间距,30是上下方向的垂直间距 JPanel imgPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 30)); imgPanel.add(new JLabel(new ImageIcon("你的图片路径1"))); imgPanel.add(new JLabel(new ImageIcon("你的图片路径2"))); frame.add(imgPanel); - 给单个图片标签加EmptyBorder
给每张图的JLabel单独设置上下左右的内边距,灵活控制每个方向的间距:JLabel imgLabel1 = new JLabel(new ImageIcon("你的图片路径1")); // 上、左、下、右内边距,按需调整数值 imgLabel1.setBorder(BorderFactory.createEmptyBorder(30, 20, 30, 10)); JLabel imgLabel2 = new JLabel(new ImageIcon("你的图片路径2")); imgLabel2.setBorder(BorderFactory.createEmptyBorder(30, 10, 30, 20)); JPanel imgPanel = new JPanel(); imgPanel.add(imgLabel1); imgPanel.add(imgLabel2); frame.add(imgPanel); - 排查布局管理器问题
要是你之前直接把图片放在JFrame的内容面板上,注意内容面板默认是BorderLayout,这种布局会让组件占满容器空间,加了边框也看不到效果。必须把图片放到子JPanel里,再给子面板或标签设置间距。
- 用FlowLayout自带的间距参数
内容的提问来源于stack exchange,提问作者HalfokayCS
相关产品推荐
相关产品推荐

