Java swing该怎么设置点击一个按钮时将其切换为红色,点击其他按钮时将其还原
展开全部
的确网上很多代码都是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);
}
}
追问
谢谢大佬,我才知道原来按钮也有数组。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询