JButton b1 = new JButton("Press");
JButton b2 = new JButton("color");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
b2.setBackground(Color.red);
}
})
我的两个panel都是定义了自己的类后实现的???
贴你的代码把,大家一起看看!
JButton b2 = new JButton("color");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
b2.setBackground(Color.red);
}
})
我的两个panel都是定义了自己的类后实现的???
贴你的代码把,大家一起看看!
public class w2
{
public static void main(String[] args)
{
FrameSize frame = new FrameSize();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class FrameSize extends JFrame
{
public FrameSize() //gouzaofangfa
{
setTitle("w2");
setSize(400,400);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screen = tk.getScreenSize();
int screenHeight = screen.height;
int screenWidth = screen.width;
setLocation((screenWidth / 2)-200, (screenHeight / 2)-200);
setResizable(false);
Image img = tk.getImage("icon.gif");
setIconImage(img);
buttonpanel panel1=new buttonpanel();
buttonpanel1 panel2=new buttonpanel1();
Container aaa=getContentPane();
aaa.add(panel1,BorderLayout.NORTH);
aaa.add(panel2,BorderLayout.CENTER);
}
class buttonpanel extends JPanel implements ActionListener
{
public buttonpanel()
{
setLocation(50,25);
setSize(350,100);
button1=new JButton("button 1");
button2=new JButton("button 2");
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
Object source=event.getSource();
if (source==button1 || source==button2)
{
button1.setBackground(Color.red);
button2.setBackground(Color.red);
setBackground(Color.green);
}
repaint();
}
private JButton button1;
private JButton button2;}
class buttonpanel1 extends JPanel
{
public buttonpanel1()
{
setLocation(250,25);
setSize(150,100);
button3=new JButton("button 3");
button4=new JButton("button 4");
add(button3);
add(button4);
image = Toolkit.getDefaultToolkit().getImage("HLPCD.GIF");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 1);
try
{
tracker.waitForID(1);
}
catch (InterruptedException exception)
{}
buttonaction buttonaction4=new buttonaction("button 4");
button4.addActionListener(buttonaction4);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (ButtonText=="button 4")
{
g.drawImage(image,50,150,null);
}
}
private class buttonaction implements ActionListener
{
public buttonaction(String text)
{
clicktext=text;
}
public void actionPerformed(ActionEvent event)
{
ButtonText=clicktext;
repaint();
}
private String clicktext;
}
private JButton button3;
private JButton button4;
private Image image;
public String ButtonText="";
}
package info.bioz.test;import javax.swing.*;
import java.awt.*;/**
* <p>File: FrameSize.java</p>
* <p><a href="http://www.bioz.info/">BIOZ.info</a> Copyright (c) 2004</p>
*
* @author <a href="mailto:[email protected]">Chance</a>
*/
public class FrameSize extends JFrame {
public FrameSize() {
setTitle("w2");
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screen = tk.getScreenSize();
int screenHeight = screen.height;
int screenWidth = screen.width;
setLocation((screenWidth / 2)-200, (screenHeight / 2)-200);
setResizable(false);
Image img = tk.getImage("icon.gif");
setIconImage(img);
JButton btn1=new JButton("button 1");
JButton btn2=new JButton("button 2");
JButton btn3=new JButton("button 3");
JButton btn4=new JButton("button 4");
ButtonPanel panel1=new ButtonPanel(btn1,btn2);
ButtonPanel panel2=new ButtonPanel(btn3,btn4);
panel1.addActionListener(panel2);
panel2.addActionListener(panel1);
Container content=getContentPane();
content.add(panel1,BorderLayout.NORTH);
content.add(panel2,BorderLayout.CENTER);
}
public static void main(String[] args) {
FrameSize frame = new FrameSize();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;/**
* <p>File: ButtonPanel.java</p>
* <p><a href="http://www.bioz.info/">BIOZ.info</a> Copyright (c) 2004</p>
*
* @author <a href="mailto:[email protected]">Chance</a>
*/
public class ButtonPanel extends JPanel implements ActionListener {
public ButtonPanel(JButton btn1,JButton btn2) {
setLocation(50,25);
setSize(350,100);
button1=btn1;
button2=btn2;
add(button1);
add(button2);
posCur=0;
setBackground(bgColor[posCur]);
button1.setBackground(bgColor[posCur+1]);
button2.setBackground(bgColor[posCur+1]);
}
public void addActionListener(ActionListener al){
button1.addActionListener(al);
button2.addActionListener(al);
}
public void actionPerformed(ActionEvent event) {
setBackground(bgColor[posCur]);
posCur=(posCur+1)%4;
button1.setBackground(bgColor[posCur]);
button2.setBackground(bgColor[posCur]);
repaint();
}
static Color []bgColor={Color.YELLOW,Color.PINK,Color.RED,Color.GREEN};
static int posCur;
private JButton button1;
private JButton button2;
}
setLocation(50,25);
setSize(350,100);
谢谢你,代码能实现功能,我是一个初学的,看你给的代码有点晕,不知道是怎么实现的,定义了两个公共类,它们是两个类,两个文件,通过什么实现调用,能给我讲讲吗。
路过的人能帮帮我忙,想搞清楚是什么意思。
public class FrameSize extends JFrame {
public FrameSize() {
//设置Frame大小、位置以及标题栏
setTitle("w2");
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screen = tk.getScreenSize();
int screenHeight = screen.height;
int screenWidth = screen.width;
setLocation((screenWidth / 2)-200, (screenHeight / 2)-200);
setResizable(false);
Image img = tk.getImage("icon.gif");
setIconImage(img);
//创建4个按钮
JButton btn1=new JButton("button 1");
JButton btn2=new JButton("button 2");
JButton btn3=new JButton("button 3");
JButton btn4=new JButton("button 4"); //用按钮1,2创建第一个panel
ButtonPanel panel1=new ButtonPanel(btn1,btn2);
//用按钮3,4创建第二个panel
ButtonPanel panel2=new ButtonPanel(btn3,btn4);
//将第二个panel加为第一个panel的监听器
// 调用panel1的addActionListener方法,其结果是将panel2加为btn1和btn2的监听器
panel1.addActionListener(panel2);
//过程同上,结果是将panel1加为btn3和btn4的监听器
panel2.addActionListener(panel1);
//以上两句保证了点击btn1或者btn2时,panel2执行相应动作(就是改变自己的颜色)
//同样,点击btn3或者btn4时,panel1执行相应动作(改变自己的颜色)
Container content=getContentPane();
//将2个panel加入当前frame
content.add(panel1,BorderLayout.NORTH);
content.add(panel2,BorderLayout.CENTER);
}
public static void main(String[] args) { //程序入口
FrameSize frame = new FrameSize(); //新建一个frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack(); //计算整个窗口各个控件的大小
frame.show(); //显示
}
}
public class ButtonPanel extends JPanel implements ActionListener {
//实现ActionListener接口,监听button的click事件
public ButtonPanel(JButton btn1,JButton btn2) {
//带两个JButton参数,用来初始化本类中的两个对象
button1=btn1;
button2=btn2;
add(button1);
add(button2);
posCur=0;
//初始化panel背景和button的背景
setBackground(bgColor[posCur]);
button1.setBackground(bgColor[posCur+1]);
button2.setBackground(bgColor[posCur+1]);
}
public void addActionListener(ActionListener al) {
//添加两个button的监听器,当button被点击时,这个ActionListener会执行
//actionPerformed方法
button1.addActionListener(al);
button2.addActionListener(al);
}
public void actionPerformed(ActionEvent event) {
//监听到Button的点击事件,改变本panel背景和button背景
setBackground(bgColor[posCur]);
posCur=(posCur+1)%4;
button1.setBackground(bgColor[posCur]);
button2.setBackground(bgColor[posCur]);
repaint(); //panel重绘
} static Color []bgColor={Color.YELLOW,Color.PINK,Color.RED,Color.GREEN};
static int posCur;
private JButton button1;
private JButton button2;
}