0
나는 십자가를 형성하는 안쪽 원에 두 개의 검정색 선이있는 양궁 표적을 그려야합니다. 그러나 선이 가운데에 더 가깝도록 선을 조정할 때마다 맨 위에 표시되는 대신 이미지 뒤쪽으로갑니다. 이걸 어떻게 막을 수 있니? 별도의 지침 집합이 필요합니까?이미지 위에 자바로 선을 그려야합니다. 이미 그렸지만 이미지 위에 표시 할 수 없습니까?
package sumshapes;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;
public class SumShapes extends JFrame
implements ActionListener {
private JPanel panel;
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.drawLine(250, 200, 250, 200);
g.drawOval(140,90,200,200);
g.setColor(Color.BLACK);
g.fillOval(140,90,200,200);
g.drawOval(162,109,155,155);
g.setColor(Color.BLUE);
g.fillOval(162,109,155,155);
g.drawOval(183,129,112,112);
g.setColor(Color.RED);
g.fillOval(183, 129, 112, 112);
g.drawOval(210,153,60,60);
g.setColor(Color.YELLOW);
g.fillOval(210, 153, 60, 60);
g.setColor(Color.BLACK);
}
public static void main(String[] args) {
SumShapes frame = new SumShapes();
frame.setSize(500,400);
frame.setBackground(Color.yellow);
frame.createGUI();
frame.setVisible(true);
}
private void createGUI(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout (new FlowLayout());
}
public void actionPerformed(ActionEvent event) {
Graphics paper = panel.getGraphics();
paper.drawLine(20,80,120,80);
}
}
1. 페인트 무시하지 마십시오 - 재정의 경량 컴퍼넌트 당신은 부모 방법의 예를 호출해야한다 (2)의'paintComponent''super.paintComponent (g) 할 필요가 전혀 없습니다'3 'JPanel'에서'getGraphics'를 호출하십시오. 드로잉은'paintComponent'로 가야합니다. https://docs.oracle.com/javase/tutorial/uiswing/painting/을 참조하십시오. – copeg