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
相关产品推荐
相关产品推荐

