java jbutton文字居中_java-将JButton图标向左对齐并保持文本居中

我想设置一个JButton,以使其图标在其左侧对齐,而文本居中.

我已经找到了如何在相同的设置下让其中一个左,另一个右或两者都处于同一位置,但是我找不到我想要的东西.

当然,我总是可以重新定义绘画方法,但是我正在寻找一种更简洁的方法.

解决方法:

您创建一个带有图标的JLabel,并创建一个带有文本“ Click me”的JLabel:

JLabel iconLabel = new JLabel(new ImageIcon(this.getClass().getResource("king.png")));

JLabel clickMe = new JLabel("Click me", SwingConstants.CENTER); //We give it the center alignment so it stays on the center of the label.

然后创建JButton,为其提供Border Layout,并在所需位置添加组件.

button.setLayout(new BorderLayout());

button.add(iconLabel, BorderLayout.WEST);

button.add(clickMe, BorderLayout.CENTER);

我给每个标签加了一个边框,这样您就可以看到每个标签的样子,因为clickMe标签不会正好在JButton的中心,而是在其JLabel的中心:

e40a9aad00c353466efc8043bf0d8045.png120714fa4e6b514f9e803a564c13d04d.png

我认为这没什么大不了的,因为几乎没有边界

4ed74853c12a2bc005e65dd69e98a7db.png

标签:java,swing,jbutton

来源: https://codeday.me/bug/20191012/1902481.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用BoxLayout布局管理器来实现JButton按钮的垂直居中。具体步骤如下: 1. 创建一个JPanel面板,并设置其布局管理器为BoxLayout。 2. 将JButton按钮添加到该面板中。 3. 调用JButton的setAlignmentY方法,将其垂直对齐方式设置为.5f。 4. 将该面板添加到容器中即可。 示例代码如下: ``` import javax.swing.*; import java.awt.*; public class Test extends JFrame { public Test() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); JButton button = new JButton("Button"); button.setAlignmentY(.5f); panel.add(button); getContentPane().add(panel); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new Test(); } } ``` ### 回答2: 在Java中,如果想要将JButton按钮垂直居中,可以使用BoxLayout管理器。BoxLayout是一个在一个面板中垂直或水平布置组件的布局管理器。可以用以下代码实现垂直居中: ```java JButton button = new JButton("Button"); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(Box.createVerticalGlue()); panel.add(button); panel.add(Box.createVerticalGlue()); ``` 在上面的代码中,先创建一个JButton对象button,然后创建一个JPanel对象panel。将BoxLayout管理器应用于panel,并设置为垂直方向BoxLayouit.Y_AXIS。 接下来,创建两个垂直组件框来增加垂直空间。Box.createVerticalGlue()方法创建一个可伸缩的、不可见的框架,可以在组件之间增加垂直空间。 将第一个垂直组件框添加到面板的开头,第二个垂直组件框添加到面板的末尾,这会将按钮垂直居中。 最后,将按钮添加到面板中。完成后,将面板添加到你的容器中即可。 使用BoxLayout是将JButton按钮垂直居中的常用方法,如果你需要固定大小的按钮,并将其垂直居中,你可以使用BoxLayout来设置JPanel的最小高度,以适应按钮的大小。 ### 回答3: 在Java编程中,JButton按钮的垂直居中显示是一个相对比较简单的问题。以下是一些实现垂直居中的方法: 方法一:使用网格布局和 JPanel 使用网格布局和 JPanel 是实现 JButton 按钮垂直居中的一种简单方法。您可以使用一个 JPanel 来容纳 JButton 和其他组件,并使用网格布局来协调它们,以使 JButton 垂直居中。 示例代码如下: ```java JPanel panel = new JPanel(new GridLayout(1,1,0,20)); //GridLayout(1, 1, 0, 20)均分,0表示组件之间的间距 JButton button = new JButton("垂直居中"); panel.add(button); panel.setPreferredSize(new Dimension(100,100)); ``` 实现结果如下: ![垂直居中按钮示例图](https://cdn.luogu.com.cn/upload/image_hosting/mc0yrnhk.png) 方法二:使用 BoxLayout BoxLayout 是一个方便的布局管理器,可以让您将组件相对于容器垂直或水平居中。 BoxLayout 有很多选项可以使用,但是对于垂直居中按钮,您可以使用以下选项: ```java Box box = Box.createVerticalBox(); box.add(Box.createVerticalGlue()); box.add(button); box.add(Box.createVerticalGlue()); ``` createVerticalBox() 方法创建一个垂直 Box,其中添加了两个 vertical glue 组件,这些组件保证了垂直居中。 示例代码及效果如下: ```java JPanel panel = new JPanel(); BoxLayout boxLayout = new BoxLayout(panel, BoxLayout.Y_AXIS); panel.setLayout(boxLayout); JButton button = new JButton("垂直居中"); panel.add(Box.createVerticalGlue()); panel.add(button); panel.add(Box.createVerticalGlue()); ``` 实现结果如下: ![垂直居中按钮示例图](https://cdn.luogu.com.cn/upload/image_hosting/fzz8c5ku.png) 方法三:使用 GridBagLayout GridBagLayout 是 Java 提供的一种高级布局管理器,它提供了对格子单元的更大控制力。可以通过GridBagConstraints 中的 gridwidth、gridheight、weightx、weighty 和 anchor 等属性来控制组件如何在其格子单元中放置和调整大小。 示例代码及效果如下: ```java JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); JButton button = new JButton("垂直居中"); c.gridx = 0; c.gridy = 0; c.weightx = 1; c.weighty = 1; c.fill = GridBagConstraints.VERTICAL; c.anchor = GridBagConstraints.CENTER; panel.add(button, c); ``` 实现结果如下: ![垂直居中按钮示例图](https://cdn.luogu.com.cn/upload/image_hosting/vyp4pon7.png) 综上,以上是三种实现 JButton 垂直居中的方法,您可以选择一种方法来实现您需要的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值