怎么让JButton的大小适应图片的大小

可以自己来设置大小:
ImageIcon icon = new ImageIcon("image/set.gif");
jb_set=new JButton(new ImageIcon("image/set.gif"));
jb_set.setPreferredSize(new Dimension(icon.getWidth(), icon.getHeight()));

但是按钮大小还会受到你所使用布局的影响,所以并不是一定生效的。


另外更常见的做法是根据按钮大小来伸缩图片,借助 Image.getScaledInstance();
对于Java中的GridLayout布局,成员元素的大小由其所在的行和列的大小决定。如果你想让成员元素保持其自带大小,可以使用GridBagLayout布局。使用GridBagLayout布局,你可以通过设置每个组件的GridBagConstraints属性来控制每个组件的大小和位置。它提供了更高级别的布局控制,但也更复杂一些。以下是一个简单的示例代码,演示如何使用GridBagLayout将组件放置在窗体中: ```java import java.awt.*; import javax.swing.*; public class GridBagLayoutExample { private JFrame frame; private JButton button1, button2, button3, button4, button5; public GridBagLayoutExample() { frame = new JFrame("GridBagLayout Example"); frame.setLayout(new GridBagLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button1 = new JButton("Button 1"); button2 = new JButton("Button 2"); button3 = new JButton("Button 3"); button4 = new JButton("Button 4"); button5 = new JButton("Button 5"); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.HORIZONTAL; frame.add(button1, gbc); gbc.gridx = 1; gbc.gridy = 0; gbc.fill = GridBagConstraints.HORIZONTAL; frame.add(button2, gbc); gbc.gridx = 2; gbc.gridy = 0; gbc.fill = GridBagConstraints.HORIZONTAL; frame.add(button3, gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.gridwidth = 3; gbc.fill = GridBagConstraints.HORIZONTAL; frame.add(button4, gbc); gbc.gridx = 1; gbc.gridy = 2; gbc.fill = GridBagConstraints.HORIZONTAL; frame.add(button5, gbc); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new GridBagLayoutExample(); } } ``` 这个例子中,我们使用GridBagLayout来放置5个按钮。我们使用GridBagConstraints来设置每个组件的位置和大小,然后将其添加到窗体中。在这个例子中,我们使用了fill属性来控制每个组件的大小,并使用gridx和gridy属性来控制它们的位置。最后,我们调用frame.pack()来自动调整窗体的大小,以适应它包含的组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值