import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;class TheListener
{
public static void main(String[] args)
{
MyFrame m = new MyFrame();
m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
m.show();
}
}class MyFrame extends JFrame
{
int ox,oy,lx,ly; private char drawType = 'c';
public MyFrame()
{
this.setSize(600,600);
this.addKeyListener(
new KeyAdapter(){
public void keyTyped(KeyEvent event)
{
drawType = event.getKeyChar();
System.out.println(drawType);//为了验证用的,假如能监听到则打印
}
}
);
this.addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent event){
ox = event.getX();
oy = event.getY();
}
public void mouseReleased(MouseEvent event){
lx = event.getX();
ly = event.getY();
repaint();
}
}
);
Container contentPane = this.getContentPane();
contentPane.add(new MyPanel());//问题所在,不知道为什么当在这加入这个MyPanel对象就失去监听!!
}
public void paint(Graphics g)
{
super.paint(g);
switch(drawType)
{
case 'r':
g.drawLine(ox,oy,lx,ly);
break;
case 'l':
g.drawString("the fool man",100,100);
break;
default:
break;
} }
}
class MyPanel extends JPanel
{
int ox,oy,lx,ly;
public MyPanel()
{
MyButton m1 = new MyButton(Color.blue,"blue");
MyButton m2 = new MyButton(Color.red,"red");
MyButton m3 = new MyButton(Color.BLACK,"black");
this.add(m1);
this.add(m2);
this.add(m3);
m1.addActionListener(m1.getInner());
m2.addActionListener(m2.getInner());
m3.addActionListener(m3.getInner());
}}
class MyButton extends JButton
{
private Color theColor = null;
private Color[] MyColor = new Color[2];
private static int click = 0;
private static Color theLineColor;
MyButton(Color c,String name)
{
MyColor[0] = c;
MyColor[1] = Color.white;
this.setText(name);
}
class InnerListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int i = MyButton.this.click%2;
MyButton.this.setBackground(MyButton.this.MyColor[i]);
theLineColor = MyColor[i];
MyButton.this.click++;
} }
InnerListener getInner()
{
return new InnerListener();
}
static Color getLineColor()
{
return theLineColor;
}
}
调试很久,初次学awt与swing,请教高手们
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;class TheListener
{
public static void main(String[] args)
{
MyFrame m = new MyFrame();
m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
m.show();
}
}class MyFrame extends JFrame
{
int ox,oy,lx,ly; private char drawType = 'c';
public MyFrame()
{
this.setSize(600,600);
this.addKeyListener(
new KeyAdapter(){
public void keyTyped(KeyEvent event)
{
drawType = event.getKeyChar();
System.out.println(drawType);//为了验证用的,假如能监听到则打印
}
}
);
this.addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent event){
ox = event.getX();
oy = event.getY();
}
public void mouseReleased(MouseEvent event){
lx = event.getX();
ly = event.getY();
repaint();
}
}
);
Container contentPane = this.getContentPane();
contentPane.add(new MyPanel());//问题所在,不知道为什么当在这加入这个MyPanel对象就失去监听!!
}
public void paint(Graphics g)
{
super.paint(g);
switch(drawType)
{
case 'r':
g.drawLine(ox,oy,lx,ly);
break;
case 'l':
g.drawString("the fool man",100,100);
break;
default:
break;
} }
}
class MyPanel extends JPanel
{
int ox,oy,lx,ly;
public MyPanel()
{
MyButton m1 = new MyButton(Color.blue,"blue");
MyButton m2 = new MyButton(Color.red,"red");
MyButton m3 = new MyButton(Color.BLACK,"black");
this.add(m1);
this.add(m2);
this.add(m3);
m1.addActionListener(m1.getInner());
m2.addActionListener(m2.getInner());
m3.addActionListener(m3.getInner());
}}
class MyButton extends JButton
{
private Color theColor = null;
private Color[] MyColor = new Color[2];
private static int click = 0;
private static Color theLineColor;
MyButton(Color c,String name)
{
MyColor[0] = c;
MyColor[1] = Color.white;
this.setText(name);
}
class InnerListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int i = MyButton.this.click%2;
MyButton.this.setBackground(MyButton.this.MyColor[i]);
theLineColor = MyColor[i];
MyButton.this.click++;
} }
InnerListener getInner()
{
return new InnerListener();
}
static Color getLineColor()
{
return theLineColor;
}
}
调试很久,初次学awt与swing,请教高手们
this.addKeyListener(
new KeyAdapter(){少了个括号