#java #swing
#java #качать
Вопрос:
Я создаю программу рисования Paint на Java, и я не могу понять, как назначить JButtons
в коде для изменения цвета.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Paint_program extends JFrame {
public Paint_program() {
Controlcircle.MoveableMousePanel p = new Controlcircle.MoveableMousePanel();
setLayout(new BorderLayout());
add(new JPanel(), BorderLayout.NORTH);
add(new JPanel(), BorderLayout.EAST);
add(new JPanel(), BorderLayout.SOUTH);
add(new JPanel(), BorderLayout.WEST);
add(new JPanel(), BorderLayout.CENTER);
add(p);
}
public class Controlcircle extends JFrame {
JButton RedButton = new JButton("Red");
JButton GreenButton = new JButton("Green");
JButton BlueButton = new JButton("Blue");
JButton EraserButton = new JButton("Eraser");
JButton ClearButton = new JButton("Clear");
CirclePanel draw = new CirclePanel();
public Controlcircle() {
JPanel Panel = new JPanel();
Panel.add(RedButton);
Panel.add(GreenButton);
Panel.add(BlueButton);
Panel.add(EraserButton);
Panel.add(ClearButton);
this.add(Panel, BorderLayout.SOUTH);
RedButton.addActionListener(new listener());
GreenButton.addActionListener(new listener());
BlueButton.addActionListener(new listener());
}
class listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color PColor = Color.BLACK;
if (e.getSource() == RedButton) {
PColor = Color.RED;
repaint();
}
}
}
public static void main(String[] args) {
Paint_program frame = new Paint_program();
frame.setTitle("Paint Program");
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class CirclePanel extends JPanel {
private int radius = 5;
}
static class MoveableMousePanel extends JPanel {
private int x = 20;
private int y = 20;
public MoveableMousePanel() {
addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
// Get the new location and repaint the screen
x = e.getX();
y = e.getY();
repaint(x, y, x, y);
}
public void mouseMoved(MouseEvent e) {
}
});
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(x, y, 4, 4);
}
}
}
}
до сих пор я только пытался заставить красную кнопку работать, пытаясь использовать этот код
class listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color PColor = Color.BLACK;
if (e.getSource() == RedButton) {
PColor = Color.RED;
repaint();
}
}
}
но мне не повезло заставить его работать
(это мой первый пост здесь, поэтому, если я допустил какие-либо ошибки с форматом, пожалуйста, дайте мне знать для будущих вопросов.)
Комментарии:
1. 1) Имена переменных НЕ должны начинаться с символа верхнего регистра. 2) Имена классов ДОЛЖНЫ начинаться с символа верхнего регистра. Любой учебник или учебник будут следовать этим соглашениям. Найдите время, чтобы изучить их. 3) Вам необходимо сохранить текущий выбранный цвет, чтобы его можно было связать с объектом, который вы хотите нарисовать. Ознакомьтесь с пользовательскими подходами к рисованию для примера.
2. Вам нужна какая-то «модель», которая может поддерживать информацию о том, что должно быть нарисовано и как оно должно быть нарисовано
3. Взгляните на это простое объяснение рисования на Github.