我有一個快速的問題給你們,好吧,快給你吧,對我來說不快。比較一個Arc2D和一個組件
我有一個充滿的Arc2D形狀的數組,我有一個MouseAdapter
內的mousePressed事件,我需要在點擊的Arc2D用的Arc2D的,甚至更好的陣列相比,全自動識別的Arc2D是點擊,然後可以從那裏工作的(改變顏色,更specificly)
我想這
private class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
Component c = gamePanel.getComponentAt(p);
if(c == arcs[0]) {
System.out.println("test");
}
}
}
當然,這並不工作,但我真的不知道該怎麼辦
非常感謝!
編輯:
看第一個回答我就到這裏後,我試圖更改代碼以這種
private class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
if(arcs[0].contains(p)) {
System.out.println("test");
}
}
}
當然這是行不通的,因爲
圓弧陣列只包含即在這種方法後來描繪的圓弧
@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);
}
我完全被卡住傢伙
*「我對你們..一個簡單的問題」 *不幸的是我對你唯一的答案並不快,所以..never頭腦。 –