이전에 유사한 질문을했지만 대답을 얻지 못했습니다. 원래 질문은 모양을 클릭 한 후 색상을 변경하는 것이 었습니다. 그러나 그것이 그려진 후에 모양에 접근하는 방법에 나는 당황합니다.그리기 후에 java.awt.Graphics의 색이 바뀝니다.
이 제의 paintComponent 방법
@Override
protected void paintComponent(Graphics graph) {
super.paintComponent(graph);
Graphics2D g = (Graphics2D) graph;
// smooth graphics
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// moving to the middle of the panel
g.translate(this.getWidth()/2, this.getHeight()/2);
// painting colored arcs
for(int i = 0; i < 4; i++) {
g.setColor(dimColors[i]);
g.fill(arcs[i]);
}
// painting borders
g.setColor(Color.BLACK);
g.setStroke(new BasicStroke(5F));
g.drawLine(-98, 0, 98, 0);
g.drawLine(0, -98, 0, 98);
g.draw(circle);
// painting central white circle
g.setColor(Color.WHITE);
g.fill(smallCircle);
g.setColor(Color.BLACK);
g.draw(smallCircle);
}
아크 [] 배열이 패널에 그려있는 Arc2D 년대의 무리를 포함한다. 내 질문은 지금, 만약 내가 예를 들어, 아크 [0]의 색상을 변경하고 싶다면, 어떻게해야합니까?
감사합니다.
편집 : 지금이 MouseAdapter 이벤트를
private class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
Component c = getComponentAt(p);
Graphics g = c.getGraphics();
dimColors[1] = Color.RED;
paintComponent(g);
}
}
을 가지고 그리고 그것은 아크의 색상을 변경, 작동 [1] 호 [1]을 그릴 때 dimColors이 [1] 컬러로 설정이 있기 때문에.
그러나 오른쪽 아크가 클릭되었는지 확인하는 방법을 아직 알 수 없습니다. 지금은 그래픽 패널의 아무 곳이나 클릭하면 특정 원호의 색이 바뀝니다
나는 나의 메인 포스트를 편집했다. 고맙습니다. 지금은 아크를 다시 그릴 수 있지만, 클릭 한 것을 확인하는 방법을 모르겠습니다 ... 어떤 생각이 있습니까? 감사! – zeta
다른 질문입니다. –