-
Исходный код:
просмотреть обычную копию в буфер обмена, распечатать?
импортировать java.awt.Color;
импортировать java.awt.Container;
импортировать java.awt.FlowLayout;
импортировать java.awt.Graphics;
импортировать java.awt.event.MouseEvent;
импортировать java.awt.event.MouseListener;
импортировать java.awt.event.MouseMotionAdapter;
импортировать javax.swing.ButtonGroup;
импортировать javax.swing.JButton;
импортировать javax.swing.JFrame;
импортировать javax.swing.JRadioButton;
//#############################################################
//Возможно, иногда после запуска программы ничего не происходит. Вам нужно подвигать мышкой по экрану, чтобы кнопка появилась.
//А почему, я не понимаю~~это нужно изучить в будущем
//####################################
public class testEventMouse расширяет JFrame{ //Основной класс наследует класс JFrame, поскольку используется метод Paint(), поэтому
//Необходимо наследовать класс Frame, иначе я, новичок, не изучил другие методы, которые могут вызывать Paint()
Контейнер contentPanel; // Ссылка на сетку контента;
JButton b1,b2,b3,b4,b5;//Это пять кнопок
JRadioButton backGroundRadio,foreGroundRadio //Определение двух полей переключателей;
ButtonGroup radioGroup; // группа переключателей;
int xValue,yValue //Сохраняем позицию мыши (x,y)
JFrame jf=this;//Назначаем текущий объект jf, потому что, когда я позже скорректировал код, я обнаружил, что цвет фона — это сетка контента или другие компоненты
//Для управления класс фрейма Frame не управляет цветом фона, но причина, по которой я хочу получить объект JFrame, заключается в том, что цвет переднего плана — это только класс фрейма;
//Можно управлять, другие компоненты не подходят для управления, если вы выполните обработку событий позже, вы обнаружите;
public testEventMouse(){ //Конструктор
super("08 Цзибен Цао Фэн — Имитация блокнота");
b1=new JButton("Black");//Реализуем пять кнопок
b2 = новая JButton («Синяя»);
b3 = новая JButton («Красный»);
b4 = новая JButton («Белый»);
b5 = новая JButton («Желтый»);
contentPanel=this.getContentPane();//Получаем панель содержимого
contentPanel.setLayout(new FlowLayout());//Устанавливаем менеджер макета сетки контента
backGroundRadio=new JRadioButton("backGround"); //Создаем экземпляр флажка
foreGroundRadio = новый JRadioButton("foreGround");
contentPanel.add(backGroundRadio);//Добавить в сетку контента
contentPanel.add(foreGroundRadio);
contentPanel.add(b1);//Добавить кнопку
contentPanel.add(b2);
contentPanel.add(b3);
contentPanel.add(b4);
contentPanel.add(b5);
MouseListenerHandler mou=new MouseListenerHandler(); //Реализуем класс прослушивания событий
b1.addMouseListener(mou); //Зарегистрируйтесь в качестве прослушивателя пяти кнопок
b2.addMouseListener(MOU);
b3.addMouseListener(MOU);
b4.addMouseListener(MOU);
b5.addMouseListener(MOU);
radioGroup=new ButtonGroup(); //Экземпляр группы переключателей
radioGroup.add(backGroundRadio);//Объединяем два переключателя в группу
radioGroup.add(foreGroundRadio);
addMouseMotionListener( //Анонимный класс
new MouseMotionAdapter(){ //Поскольку он вызывается текущим объектом, я создал адаптер, с которым можно поиграть.
общественная недействительность mouseDragged (MouseEvent e) {
xValue=e.getX();
yValue=e.getY();
repaint(); //Вызов метода Paint();
}
}
);
setSize(1000,500); //Если вы хотите это сделать, сделайте это большим
setVisible(true); //Устанавливаем видимость
}
публичный класс MouseListenerHandler реализует MouseListener{ //Класс прослушивания событий мыши
public void mousePressed(MouseEvent e){ //На самом деле есть только одна полезная вещь — событие щелчка мыши
//Поскольку нужно отслеживать множество объектов, использовать адаптер нецелесообразно.
if(e.getSource()==b1){ //Используйте getSouce() для получения объекта
если (backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLACK); // Вот и все, используйте сетку контента, чтобы установить цвет фона
еще //#####################
jf.setForeground(Color.BLACK); //Используем фрейм для установки цвета переднего плана
}
если (e.getSource() == b2) {
если (backGroundRadio.isSelected())
contentPanel.setBackground(Color.BLUE);
еще
jf.setForeground(Color.BLUE);
}
если (e.getSource() == b3) {
если (backGroundRadio.isSelected())
contentPanel.setBackground(Color.RED);
еще
jf.setForeground(Color.RED);
}
если (e.getSource() == b4) {
если (backGroundRadio.isSelected())
contentPanel.setBackground(Color.WHITE);
еще
jf.setForeground(Color.WHITE);
}
если (e.getSource() == b5) {
если (backGroundRadio.isSelected())
contentPanel.setBackground(Color.YELLOW);
еще
jf.setForeground(Color.YELLOW);
}
}
public void mouseClicked(MouseEvent e) { //Следующие вещи бесполезны, но в качестве методов интерфейса пустая реализация
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public void Paint(Graphics g){ //Нарисуйте несколько маленьких кружочков, чтобы сбить с толку человеческий глаз, хаха
g.fillOval(xValue, yValue, 4, 4 //Рисуем круг);
}
public static void main(String args[]){
новый testEventMouse(); //Анонимный класс
}