Tôi đang cố gắng tạo một Mastermind bằng Java. Mã này không thực sự khó, nhưng tôi muốn có một giao diện rất tốt. Tôi có một JPanel mà mất tất cả JFrame của tôi, và tôi vẽ JPanel này với surchargind repaint()
phương pháp:Sơn trong một phần của JPanel mà không cần sơn lại phần còn lại
public void paint(Graphics g) //méthode permettant de dessiner les éléments sur la carte
{
super.paintComponents(g);
Graphics gr;
gr = MasterMindPane.getGraphics();
img = MasterMindPane.getToolkit().getImage("images/plateau4-8.jpg");
gr.drawImage(img, 0, 0, 600, 720, this);
gr = bouleRougePane.getGraphics();
img = bouleRougePane.getToolkit().getImage("images/bouleRouge.png");
//gr.drawImage(img, 535, 303, 45, 45, this);
gr.drawImage(img, 0, 0, 45, 45, this);
gr = bouleOrangePane.getGraphics();
img = bouleOrangePane.getToolkit().getImage("images/bouleOrange.png");
//gr.drawImage(img, 535, 303, 45, 45, this);
gr.drawImage(img, 0, 0, 45, 45, this);
}
Khi tôi bấm vào một hình ảnh, trong đó có một Panel, tôi vẽ một vòng tròn màu vàng như thế:
private void bouleRougePaneMouseClicked(java.awt.event.MouseEvent evt) {
Graphics2D g2d = (Graphics2D) MasterMindPane.getGraphics();
for(int i = 0; i<4; i++)
{
g2d.setColor(Color.ORANGE);
g2d.setStroke(new BasicStroke(3));
g2d.drawOval(78+i*70, 106+etape*50, 35, 35);
}
}
Và khi tôi chọn một lỗ, tôi muốn xóa vòng tròn, chỉ cho biết nơi người chơi có thể chơi.
Nhưng tôi không biết cách xóa vòng tròn, hoặc vẽ lại chỉ là một phần của hình ảnh của tôi, bởi vì chi phí rất nhiều để sơn lại tất cả.
Bạn đã thử gọi phương thức 'repaint (Rectangle r)' chưa? –
Có, tôi đã cố gắng nhưng sơn lại (Hình chữ nhật r) xóa tất cả hình ảnh của tôi, và chỉ sơn lại phần được chỉ định trong Hình chữ nhật – algelos
Ý của bạn là xóa tất cả hình ảnh của bạn? Mục đích của việc sử dụng repaint (Rectangle r) là chỉ có một phần repaint và đó là những gì bạn đang yêu cầu trong câu hỏi của bạn; Tôi phải hiểu nhầm điều gì đó ở đây. Câu hỏi khác, 'MasterMindPane.getGraphics()' là gì? Tại sao bạn không sử dụng 'Graphics g' được cung cấp? –