You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing如何实现JButton上文字显示在图片上方的效果

解决方案

JButton 本身内置了控制文本与图标相对位置的API,无需自定义组件即可实现你需要的上下叠加显示效果,只需在原有按钮配置逻辑中添加2行代码即可。

新增代码片段

在你设置按钮属性的代码段中,加入如下配置:

// 设置文本位于图标的垂直上方
b2.setVerticalTextPosition(SwingConstants.TOP);
// 设置文本与图标水平居中对齐
b2.setHorizontalTextPosition(SwingConstants.CENTER);

可选调整说明

你当前设置的按钮高度为27px,上下布局后文本和图标可能出现显示裁剪,可根据你使用的图标尺寸调整按钮高度,例如将按钮尺寸修改为new Dimension(340, 70)即可兼容大多数常用图标+文字的上下布局需求。

修改后完整可运行代码

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;

public class ToolBarSample {
  public static void main(final String args[]) {
    JFrame frame = new JFrame("JToolBar Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JToolBar toolbar = new JToolBar();
    toolbar.setRollover(true);

    JButton b2 = new JButton();
    b2.setText("Big Button");
    b2.setIcon(new ImageIcon("C:\\Downloads\\Java.png"));
    b2.setBackground(Color.RED);
    b2.setFocusable(false);
    b2.setOpaque(true);
    // 可根据需要调整高度参数
    Dimension buttonSize = new Dimension(340,70);
    b2.setPreferredSize(buttonSize);
    b2.setMinimumSize(buttonSize);
    b2.setMaximumSize(buttonSize);
    b2.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
    b2.setVerticalAlignment(SwingConstants.CENTER);
    // 新增的位置配置
    b2.setVerticalTextPosition(SwingConstants.TOP);
    b2.setHorizontalTextPosition(SwingConstants.CENTER);

    toolbar.add(b2);
    
    Container contentPane = frame.getContentPane();
    contentPane.add(toolbar, BorderLayout.NORTH);
    JTextArea textArea = new JTextArea();
    JScrollPane pane = new JScrollPane(textArea);
    contentPane.add(pane, BorderLayout.CENTER);
    frame.setSize(550, 350);
    frame.setVisible(true);
  }
}

内容的提问来源于stack exchange,提问作者Unhandled Exception

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:54:02