Test 클래스에서는 3 개의 패널을 만듭니다. 수업 시간에 자유로운 그림을 그립니다.Java로 자유롭게 그림 그리기, JPanel에 그림 추가
내 개체 d를 centerPanel에 추가하려고합니다. 내가 할 때 아무 것도 끌지 않습니다. 하지만 프레임에 추가하면 (getContentPane(). add를 사용하여) 그립니다. 문제가 어디에 있는지 아는 사람이 있습니까?
topPanel = new JPanel();
centerPanel = new JPanel();
bottomPanel = new JPanel();
Draw d = new Draw();
getContentPane().add(d, BorderLayout.CENTER); //This works
add(topPanel, BorderLayout.PAGE_START);
add(bottomPanel, BorderLayout.PAGE_END);
/* I WANT THIS TO WORK INSTEAD */
/* centerPanel.add(d); */ //How can I write this line of code?
/* add(topPanel, BorderLayout.PAGE_START); */
/* add(centerPanel, BorderLayout.CENTER); */
/* add(bottomPanel, BorderLayout.PAGE_END); */
클래스 그린다
public class FreeHand extends JComponent, MouseListener, MouseMotionListener {
int x;
int y;
int posX;
int posY;
public FreeHand()
{
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void mousePressed(MouseEvent me) {
posX = me.getX();
posY = me.getY();
}
@Override
public void mouseDragged(MouseEvent me) {
Graphics g = getGraphics();
g.setColor(Color.RED);
g.drawLine(posX, posY, me.getX(), me.getY());
posX = me.getX();
posY = me.getY();
}
@Override
public void mouseMoved(MouseEvent me) {}
@Override
public void mouseClicked(MouseEvent me) {}
@Override
public void mouseEntered(MouseEvent me) {}
@Override
public void mouseExited(MouseEvent me) {}
@Override
public void mouseReleased(MouseEvent me) {}
}
'getGraphics'를 사용하여'paintComponent' 바깥쪽에 페인트하는 것이 옳은 방법이 아닙니다. [내 대답은 여기] (http://stackoverflow.com/quest)를 읽으십시오. ion/21322353/java-jpanel-getgraphics/21322873 # 21322873)을 참조하십시오. (이미지를 그린 다음 패널에 이미지를 그립니다.) – Radiodef