永发信息网

java 通过单击按钮,同时实现按钮的大小和标签文本的变化

答案:2  悬赏:70  手机版
解决时间 2021-04-16 05:18

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


public class Button_Color extends JApplet implements ActionListener{



Container ctp = getContentPane();
JButton but1 = new JButton("红色");

JButton but2 = new JButton("蓝色");

JButton but3 = new JButton("绿色");

JLabel lab1 = new JLabel();

JPanel pan = new JPanel(); // 都是 在这里 初始化 的

public void init()
{

ctp.setLayout(new FlowLayout(FlowLayout.RIGHT,100,100));

ctp.add(pan);

pan.add(but1);

pan.add(but2);

pan.add(but3);

ctp.add(lab1);


but1.addActionListener(this);
but2.addActionListener(this);
but3.addActionListener(this); // 注意 ,换一个 容器 就 OK 啦 ...只能改变 一种 状态的


}

public void actionPerformed(ActionEvent e)
{

if(e.getSource() == but1)
{

lab1.setText("红色");
lab1.setForeground(Color.red);
lab1.setFont(new Font("TimesRomar",Font.ITALIC,24 ));
}
if(e.getSource() == but2)
{

but2.setSize(30,10);
lab1.setForeground(Color.blue);

lab1.setText("蓝色");
lab1.setFont(new Font("宋体",Font.BOLD,48 ));

}

if(e.getSource() == but3)
{
but3.setSize(100,40);
lab1.setForeground(new Color(0,255,0));

lab1.setText("绿色");

lab1.setFont(new Font("楷体",Font.PLAIN,36 ));

}

}

}

// 为什么 无法实现 按钮 和 标签 同时 有 变化 。。。

// 单个 变化 的 ,则是 可以的 ?


最佳答案

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


public class Button_Color extends JApplet implements ActionListener {


Container ctp = getContentPane();
JButton but1 = new JButton("红色");


JButton but2 = new JButton("蓝色");


JButton but3 = new JButton("绿色");


JLabel lab1 = new JLabel();


JPanel pan = new JPanel(); // 都是 在这里 初始化 的


public void init() {

ctp.setLayout(null);
ctp.add(but1);
ctp.add(but2);
ctp.add(but3);
ctp.add(lab1);
but1.setBounds(0, 40, 60, 30);
but2.setBounds(0, 100, 60, 30);
but3.setBounds(0, 150, 60, 30);
lab1.setBounds(200, 100, 200, 200);


but1.addActionListener(this);
but2.addActionListener(this);
but3.addActionListener(this); // 注意 ,换一个 容器 就 OK 啦 ...只能改变 一种 状态的


}


public void actionPerformed(ActionEvent e) {


if (e.getSource() == but1) {


lab1.setText("红色");
lab1.setForeground(Color.red);
lab1.setFont(new Font("TimesRomar", Font.ITALIC, 24));

but2.setSize(60, 30); //回复按钮2的初始状态
but3.setSize(60, 30); //回复按钮3的初始状态

}
if (e.getSource() == but2) {


but2.setSize(30, 10);
lab1.setForeground(Color.blue);


lab1.setText("蓝色");
lab1.setFont(new Font("宋体", Font.BOLD, 48));

but3.setSize(60, 30); //回复按钮3的初始状态


}


if (e.getSource() == but3) {
but3.setSize(100, 40);
lab1.setForeground(new Color(0, 255, 0));


lab1.setText("绿色");


lab1.setFont(new Font("楷体", Font.PLAIN, 36));

but2.setSize(60, 30); //回复按钮2的初始状态


}


}


}


----------------
代码修改完毕,可以实现点击按钮改变按钮大小的效果了。


以前我也遇到设置按钮大小但不能改变的情况,但没怎么注意,今天有时间就研究了下。


从网上查的资料说要改变按钮的大小,就设置容器的布局管理器为空。


试了一下,确实可以实现按钮的大小改变。


不过有点麻烦,你需要自己定义组件的位置以及大小。


具体修改如上代码,自己研究下吧。


其实自由布局有时候还是很方便的,能让组件放在任何位置,设置组件的任何大小。


全部回答

呵呵、高级语言的运行都是边解释边运行,然后有错误才报错并停止在你错的地方.

这个是关键,你的事件代码是从上往下执行的,你是注册了一个系统事件,然后判断促发事件的事件源,当然是先执行先判断的那一个控件了.

如果要同时执行的话,我建议你把所有控件的事件都注册了,或者注册了你促发的那事件,不要笼统的注册一个事件

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
非山东省生源是什么意思?
[image]200 找一款手游 只记得是像素地牢类型
更木剑八 终解是什么.
诺基亚5230的手机QQ版本,UC浏览器,飞信,来
青春期的女孩子在想什么?
我是保险业务员,请问一份保单第三年还有继续
怎么查看网站是否被攻击
银魂有多少集
南京中草医院地址在什么地方,想过去办事
QQ宠物皇家战旗刷屏?
恒大球迷政治标语事件,广州恒大球迷在场内打
受降仪式是接受别人投降仪式的意思么?
200-400元那款MP3或MP4好(带图最好)
PSP3000金手指
哪里有好听的抒情歌曲呀?
推荐资讯
喝醉了 ,现在还没醒,昨天都不知道怎么走回
香飘飘熟食店我想知道这个在什么地方
战地之王11.3号几点能抢到内测号
求《坏蛋是怎样炼成的》TXT下载
大学生要创业!什么最实际??
前打竿用什么轮子好,什么是前打杆?
XS(女)穿什么炫装好看 发图看看 并说明买永
欢乐大草原我想知道这个在什么地方
为什么今年这么冷???
感觉陷入思维怪圈怎么破
聋子打鼓吵架的歇后语,聋子见哑巴的歇后语∞.
环卫工人感动的作文自我评价
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?