Заявление об ограничении ответственности: я новичок в Java. Я новичок в Swing. И я уверен, что это видно.
Я просмотрел довольно много примеров / руководств по рисованию на холсте jpanel. Но в основном они имеют один и тот же базовый формат c и помещают все свои drawLine / drawRect / drawAr c в метод paintComponent (). Предполагается, что люди хотят нарисовать статические c объекты на jpanel один раз. Но что, если я хочу изменить объект jpanel в процессе выполнения программы, например, программу рисования или игру?
Я полагаю, мне нужно иметь доступ к объекту jpanel и внутренним методам для покрасить. Готов поспорить, что то, что я делаю, не является передовой практикой, но вот что у меня есть:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PaintPanel extends JPanel {
public static JFrame frame;
private Graphics g = getGraphics();
public static void main(String[] args) {
frame = new JFrame();
frame.getContentPane().setBackground(new Color(32, 32, 32));
frame.setResizable(false);
frame.setBounds(1, 1, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setVisible(true);
frame.setLocationRelativeTo(null); // center frame on screen
PaintPanel paintPanel = new PaintPanel();
paintPanel.setBounds(10, 10, 100, 100);
paintPanel.setBackground(Color.red);
frame.add(paintPanel);
}
// constructor
public PaintPanel() {
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
public void DrawRect(Integer x, Integer y, Integer w, Integer h, Color color) {
g.setColor(color);
g.fillRect(x, y, w, h);
this.repaint(); // doesn't seem to do anything
}
}
Этот код приводит к появлению красной панели, но мой пользовательский метод DrawRect () не нарисуйте что угодно.
- В некоторых местах я читал, что необходимо переопределить метод paintComponent (). Если в нем ничего нет, зачем?
- Как мне заставить работать мой метод DrawRect ()?