Tôi đang làm việc trên một máy đánh bạc trong Java và cho đến nay tôi đã tạo ra một nút ngẫu nhiên sẽ tạo ra hai hình ảnh. Mã của tôi biên dịch nhưng khi tôi chạy nó, tất cả những thứ tôi đưa vào phương pháp vẽ không hiển thị. Có điều gì tôi đang thiếu? Cảm ơn sự giúp đỡ của bạn và đây là một số mã của tôi.Cách sử dụng phương pháp sơn trong JPanel
public void paint(Graphics g) {
super.paintComponents(g);
g.drawString("Int 1 is" + int1,30,30);
g.drawString("Int 2 is" + int2,30,80);
switch (int1) {
case 0:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img, 300, 500, this);
break;
case 1:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img2,300,500,this);
break;
case 2:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img3,300,500,this);
break;
case 3:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img4,300,500,this);
break;
case 4:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img5,300,500,this);
break;
case 5:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img6,300,500,this);
break;
case 6:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img7,300,500,this);
break;
case 7:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img8,300,500,this);
break;
case 8:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img9,300,500,this);
break;
case 9:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img10,300,500,this);
break;
}
switch (int2) {
case 0:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img, 800, 500, this);
break;
case 1:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img2,800,500,this);
break;
case 2:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img3,800,500,this);
break;
case 3:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img4,800,500,this);
break;
case 4:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img5,800,500,this);
break;
case 5:
\ g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img6,800,500,this);
break;
case 6:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img7,800,500,this);
break;
case 7:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img8,800,500,this);
break;
case 8:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img9,800,500,this);
break;
case 9:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img10,800,500,this);
break;
}
this.setVisible(true);
}
Khi giao dịch với 'Swing', người ta không nên chơi bằng phương pháp' paint' cho công việc như vậy. Thay vào đó, hãy ghi đè phương thức 'paintComponent (...)' của một số 'JComponent/JPanel' để làm các công cụ liên quan đến bức tranh. Thông tin thêm tại [Performing Custom Painting] (https://docs.oracle.com/javase/tutorial/uiswing/painting/). Do đọc các giải quyết vấn đề thường gặp, vấn đề đầu tiên sẽ trả lời những gì bạn làm sai. Hy vọng nó sẽ giúp :-) –
Yikes, phương thức 'paint' của bạn gọi' super.paintComponents (...) 'là một điều rất nguy hiểm.Xin vui lòng đọc các hướng dẫn vẽ trên này như tất cả của nó rất tốt giải thích và đồng ý chính xác với những gì @ nIcEcOw nêu trên. Bản thân tôi, tôi chỉ đơn giản là trao đổi ImageIcons hiển thị trong một JLabel. –
Vui lòng xem chỉnh sửa để trả lời. –