-
Código fuente:
¿Ver copia simple en el portapapeles?
importar java.awt.Color;
importar java.awt.Container;
importar java.awt.FlowLayout;
importar java.awt.Graphics;
importar java.awt.event.MouseEvent;
importar java.awt.event.MouseListener;
importar java.awt.event.MouseMotionAdapter;
importar javax.swing.ButtonGroup;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JRadioButton;
//####################################
// Quizás a veces no haya nada después de ejecutar el programa. Es necesario mover el mouse en la pantalla para que aparezca el botón.
// En cuanto a por qué, no lo entiendo ~~ es necesario estudiarlo en el futuro.
//#####################################
public class testEventMouse extiende JFrame{ //Clase principal, hereda la clase JFrame, porque se usa el método paint(), entonces
//Debo heredar una clase Frame; de lo contrario, yo, un principiante, no he aprendido otros métodos que puedan llamar a paint()
Panel de contenido del contenedor; //Referencia de la cuadrícula de contenido
JButton b1,b2,b3,b4,b5;//Estos son cinco botones
JRadioButton backGroundRadio,foreGroundRadio //Definir dos cuadros de botones de radio
ButtonGroup radioGroup; //grupo de botones de opción
int xValue,yValue; //Mantener la posición del mouse (x,y)
JFrame jf=this;//Asigne el objeto actual a jf, porque cuando luego ajusté el código, encontré que el color de fondo es la cuadrícula de contenido u otros componentes
// Para administrar, la clase de marco Frame no administra el color de fondo, pero la razón por la que quiero obtener el objeto JFrame es porque el color de primer plano es solo la clase de marco;
// Se puede administrar, otros componentes no están calificados para administrar si realiza el procesamiento de eventos más adelante, lo encontrará;
público testEventMouse(){ //Constructor
super("08 Jiben Cao Feng--Bloc de notas simulado");
b1=new JButton("Black");//Implementar cinco botones
b2=nuevo JButton("Azul");
b3=nuevo JButton("Rojo");
b4=nuevo JButton("Blanco");
b5=nuevo JButton("Amarillo");
contentPanel=this.getContentPane();//Obtener el panel de contenido
contentPanel.setLayout(new FlowLayout());//Establecer el administrador de diseño de la cuadrícula de contenido
backGroundRadio=new JRadioButton("backGround"); //Crea una instancia de la casilla de verificación
foreGroundRadio=new JRadioButton("foreGround");
contentPanel.add(backGroundRadio);//Agregar a la cuadrícula de contenido
contentPanel.add(foreGroundRadio);
contentPanel.add(b1);//Agregar botón
contentPanel.add(b2);
contentPanel.add(b3);
contentPanel.add(b4);
panel de contenido.add(b5);
MouseListenerHandler mou=new MouseListenerHandler(); //Implementar una clase de escucha de eventos
b1.addMouseListener(mou); //Registrarse como oyente para cinco botones
b2.addMouseListener(mou);
b3.addMouseListener(mou);
b4.addMouseListener(mou);
b5.addMouseListener(mou);
radioGroup=new ButtonGroup(); // Instancia de grupo de botones de opción
radioGroup.add(backGroundRadio);//Combina dos botones de radio en un grupo
radioGroup.add(foreGroundRadio);
addMouseMotionListener( //Clase anónima
new MouseMotionAdapter(){ // Debido a que lo llama el objeto actual, hice un adaptador para jugar.
mouse vacío público arrastrado (MouseEvent e) {
xValue=e.getX();
yValue=e.getY();
repintar(); //Llamar al método paint()
}
}
);
setSize(1000,500); //Si quieres hacerlo, hazlo grande
setVisible(verdadero); //Establecer visible
}
clase pública MouseListenerHandler implementa MouseListener{ //clase de escucha de eventos del mouse
public void mousePressed(MouseEvent e){ //De hecho, solo hay una cosa útil, que es el evento de clic del mouse
//Debido a que hay muchos objetos que monitorear, no es bueno usar un adaptador.
if(e.getSource()==b1){ //Utiliza getSouce() para obtener el objeto
si(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLACK);// Aquí viene el punto, use la cuadrícula de contenido para establecer el color de fondo
demás //#####################
jf.setForeground(Color.BLACK); //Usa el marco para establecer el color de primer plano
}
if(e.getSource()==b2){
si(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLUE);
demás
jf.setForeground(Color.AZUL);
}
if(e.getSource()==b3){
si(backGroundRadio.isSelected())
contentPanel.setBackground(Color.RED);
demás
jf.setForeground(Color.ROJO);
}
if(e.getSource()==b4){
si(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLANCO);
demás
jf.setForeground(Color.BLANCO);
}
if(e.getSource()==b5){
si(backGroundRadio.isSelected())
contentPanel.setBackground(Color.AMARILLO);
demás
jf.setForeground(Color.AMARILLO);
}
}
public void mouseClicked(MouseEvent e) { //Las siguientes cosas son inútiles, pero como métodos de interfaz, implementación vacía
}
mouseEntered público vacío (MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
pintura vacía pública (Gráficos g) { // Dibuja algunos círculos pequeños para confundir al ojo humano, jaja
g.fillOval(xValue, yValue, 4, 4); //Dibuja un círculo;
}
principal vacío estático público (String args []) {
nuevo testEventMouse(); //Clase anónima
}