-
Código fonte:
visualizar cópia simples para impressão da área de transferência?
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;
//###################################
//Talvez às vezes não haja nada depois de executar o programa. Você precisa mover o mouse na tela para fazer o botão aparecer.
// Quanto ao porquê, eu não entendo ~~ precisa ser estudado no futuro
//####################################
public class testEventMouse estende JFrame{ //Classe principal, herda a classe JFrame, porque o método paint() é usado, então
//Devo herdar uma classe Frame, caso contrário eu, iniciante, não aprendi outros métodos que possam chamar paint()
Container contentPanel; //Referência da grade de conteúdo
JButton b1,b2,b3,b4,b5;//Estes são cinco botões
JRadioButton backGroundRadio,foreGroundRadio; //Define duas caixas de botão de opção
ButtonGroup radioGroup; //grupo de botões de opção
int xValue,yValue; //Mantém a posição do mouse (x,y)
JFrame jf=this;//Atribuir o objeto atual a jf, porque quando ajustei o código posteriormente, descobri que a cor de fundo é a grade de conteúdo ou outros componentes
//Para gerenciar, a classe Frame frame não gerencia a cor de fundo, mas o motivo pelo qual desejo obter o objeto JFrame é porque a cor do primeiro plano é apenas a classe frame;
//Pode ser gerenciado, outros componentes não estão qualificados para gerenciar; se você fizer o processamento de eventos posteriormente, encontrará
public testEventMouse(){ //Construtor
super("08 Jiben Cao Feng - Bloco de escrita simulado");
b1=new JButton("Black"); //Implementa cinco botões
b2=new JButton("Azul");
b3=new JButton("Vermelho");
b4=new JButton("Branco");
b5=new JButton("Amarelo");
contentPanel=this.getContentPane();//Obter o painel de conteúdo
contentPanel.setLayout(new FlowLayout()); //Definir o gerenciador de layout da grade de conteúdo
backGroundRadio=new JRadioButton("backGround"); //Instancia a caixa de seleção
foreGroundRadio=new JRadioButton("foreGround");
contentPanel.add(backGroundRadio);//Adiciona à grade de conteúdo
contentPanel.add(foreGroundRadio);
contentPanel.add(b1);//botão Adicionar
contentPanel.add(b2);
contentPanel.add(b3);
contentPanel.add(b4);
contentPanel.add(b5);
MouseListenerHandler mou=new MouseListenerHandler(); //Implementar uma classe de escuta de eventos
b1.addMouseListener(mou); //Registra-se como ouvinte para cinco botões
b2.addMouseListener(mou);
b3.addMouseListener(mou);
b4.addMouseListener(mou);
b5.addMouseListener(mou);
radioGroup=new ButtonGroup(); //Grupo de botões de opção da instância
radioGroup.add(backGroundRadio);//Combina dois botões de opção em um grupo
radioGroup.add(foreGroundRadio);
addMouseMotionListener( //Classe anônima
new MouseMotionAdapter(){ //Como ele é chamado pelo objeto atual, criei um adaptador para brincar.
public void mouseDragged(MouseEvent e){
xValue=e.getX();
yValue=e.getY();
repaint(); //Chama o método paint()
}
}
);
setSize(1000,500); //Se você quiser fazer isso, torne-o grande
setVisible(true); //Definir visível
}
classe pública MouseListenerHandler implementa MouseListener{ //Classe de escuta de evento de mouse
public void mousePressed(MouseEvent e){ //Na verdade, só existe uma coisa útil, que é o evento de clique do mouse
//Como existem muitos objetos a serem monitorados, não é aconselhável utilizar um adaptador.
if(e.getSource()==b1){ //Use getSouce() para obter o objeto
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLACK);//Aqui vem o ponto, use a grade de conteúdo para definir a cor de fundo
outro //#####################
jf.setForeground(Color.BLACK); //Use Frame para definir a cor do primeiro plano
}
if(e.getSource()==b2){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLUE);
outro
jf.setForeground(Color.AZUL);
}
if(e.getSource()==b3){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.RED);
outro
jf.setForeground(Color.RED);
}
if(e.getSource()==b4){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.WHITE);
outro
jf.setForeground(Color.BRANCO);
}
if(e.getSource()==b5){
if(backGroundRadio.isSelected())
contentPanel.setBackground(Color.AMARELO);
outro
jf.setForeground(Color.AMARELO);
}
}
public void mouseClicked(MouseEvent e) { //As coisas a seguir são inúteis, mas como métodos de interface, implementação vazia
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public void paint(Graphics g){ //Desenhe alguns pequenos círculos para confundir o olho humano, haha
g.fillOval(xValue, yValue, 4, 4);
}
public static void main(String args[]){
new testEventMouse(); //Classe anônima
}