Java swing该怎么设置点击一个按钮时将其切换为红色,点击其他按钮时将其还原

如题,注意不是JavaScript或是JSP!网上全是这两种内容,复制党请远离... 如题,注意不是JavaScript或是JSP!网上全是这两种内容,复制党请远离 展开
 我来答
雪飞潇潇
2019-05-11 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:867万
展开全部

的确网上很多代码都是JavaScript的. 但是很多编程语言都是相同的思路. 只要看懂了JavaScript,一样可以迁移到java里使用了.

思路: 按钮都存入同一个容器里, 然后点击按钮后 ,所有的按钮恢复为初始的颜色,然后在设置点击按钮的背景色为红色即可.

(当然思路很多,这是其中最简单的一种思路; 

另外提示一种思路,使用一个变量lastBtn 用于记录上一次点击的按钮, 点击按钮后,先把上一次按钮的颜色恢复成默认的颜色, 如果上一次点击的按钮为null ,那么忽略不设置; 然后再把这次点击的按钮 nowBtn设置成红色,最后lastBtn=nowBtn)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ButtonFrame extends JFrame implements ActionListener {
JButton[] jbs;// 把按钮存放到一个数组或集合里
Color bgColor;// 保存按钮的默认背景颜色
Color fgColor;// 保存按钮的默认前景色(文字颜色)

public ButtonFrame() {
JPanel jp = new JPanel();
jbs = new JButton[3];
// 初始化数组,并赋值
for (int i = 0; i < jbs.length; i++) {
jbs[i] = new JButton("按钮" + (i + 1));
jbs[i].addActionListener(this);
jp.add(jbs[i]);// 把按钮依次添加到面板中
}

bgColor = jbs[0].getBackground();
fgColor = jbs[0].getForeground();
add(jp);

setSize(320, 100);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 初始时,默认按下了第一个按钮
// addWindowListener(new WindowAdapter() {
// @Override
// public void windowOpened(WindowEvent e) {
// jbs[0].doClick();
// }
// });
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ButtonFrame().setVisible(true);

}
});
}

// 点击按钮,把所有按钮的背景色和文字颜色都复原;然后设置点击按钮的背景色和文字颜色
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < jbs.length; i++) {
jbs[i].setBackground(bgColor);
jbs[i].setForeground(fgColor);
}
// 设置只有按钮1 点击会变色, 其他按钮被点击不会变色
// if(!e.getActionCommand().equals("按钮1")){
// return;
// }

// 获取被点击的按钮
JButton clickBtn = (JButton) e.getSource();
clickBtn.setBackground(Color.RED);
clickBtn.setForeground(Color.WHITE);
}
}
追问
谢谢大佬,我才知道原来按钮也有数组。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式