java创建一个按钮_如何在Java中创建一个带有连接按钮的Button...

我目前正在尝试创建一组切换按钮,这些按钮类似于Eclipse的格式化程序首选项中使用的按钮:

目前我已通过以下方式尝试此操作:

public class Exercise extends JFrame {

private String[] buttonNames = {"A", "B", "C", "D", "E"};

Exercise() {

final JPanel topPanel = new JPanel();

topPanel.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

int tabCount = 0;

final ButtonGroup topButtonGroup = new ButtonGroup();

for (String buttonName : buttonNames) {

JToggleButton tabButton = new JToggleButton(buttonName);

topButtonGroup.add(tabButton);

c.fill = GridBagConstraints.HORIZONTAL;

c.insets = new Insets(0, -6, 0, -7); // Questionable line

c.gridx = tabCount;

c.gridy = 0;

topPanel.add(tabButton, c);

tabCount++;

}

this.add(topPanel);

this.setVisible(true);

this.pack();

}

public static void main(String[] args) {

new Exercise();

}

}

结果如下:

我的代码有几个问题.首先,我不明白为什么我必须让插图消极.根据Oracle’s tutorial,“[b] y默认情况下,每个组件都没有外部填充.”因此,默认情况下不应该没有空格吗?没有负面插图,结果如下所示:

其次,我希望切换按钮变暗而不是转为蓝色并切换为“打开”.有没有简单的方法通过Java Swing做到这一点?最后,总的来说有没有更好的方法?我很想知道Eclipse如何设法让切换按钮看起来好像是完美连接的.

更新

我尝试过按照建议使用BoxLayout.不幸的是,这似乎没有解决问题.结果几乎与上图相同.这是修改后的构造函数:

Exercise() {

final JPanel topPanel = new JPanel();

topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS));

final ButtonGroup topButtonGroup = new ButtonGroup();

for (String buttonName : buttonNames) {

JToggleButton tabButton = new JToggleButton(buttonName);

// tabButton.setBorder(BorderFactory.createBevelBorder(

// BevelBorder.RAISED, Color.LIGHT_GRAY, Color.DARK_GRAY));

topButtonGroup.add(tabButton);

topPanel.add(tabButton);

}

this.add(topPanel);

this.setVisible(true);

this.pack();

}

有趣的是,当我尝试添加上面注释的边框时,按钮之间的额外间距不知何故消失了.结果如下:

我希望尽可能保持按钮的一般外观,但是边缘要更加矩形,以便切换按钮看起来更加连接.

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值