タイトルが示すように、最終的にそろばんにカウンターを描画するときに、Java コードに問題があります。コードはコンパイルおよび実行されますが、カウンターは一番上の行ではなく最初の行から描画されます。これに加えて、カウンターは各列にスタックされません。1 つのカウンターが表示され、クリックされたボタンに応じて列を上下に移動しますが、これは正しいですが、左クリックするとカウンターが加算されるか、右クリックすると減算されます。
私はこれに数時間を費やしましたが、それはばかげたことだと確信していますが、私の脳は機能を停止しており、解決策は考えられません.
とにかく、ここに私のコードがあります。
AbacusPanel.java
public void paint(Graphics g)
{
g.setColor(Color.gray);
g.fillRect(0,0,getWidth(), getHeight());
g.setColor(Color.black);
Graphics2D g2 = (Graphics2D)g;
// we'll use Graphics2D for it's "draw" method -
// neater than the Graphics "drawRect" suppled
// (which you could also use)
for (int i = 0;i<numCols;i++)
{
for(int j = 0;j<numRows;j++)
{
g2.draw(getRect(i,j));
}
}
for(int thisCol= 0; thisCol < numCols; thisCol++)
{
for(int thisRow = 0; thisRow < numRows; thisRow++)
{
for(int counters=0; counters<=myAbacus.getNumCounters(thisCol); counters++)
{
Rectangle r2 = getRect(thisCol,myAbacus.getNumCounters(thisCol));
g2.setColor(Color.red);
g2.fillOval(r2.x, r2.y, r2.width, r2.height);
}
}
}
}
うまくいけば、誰かが私を正しい方向に向けることができます.これがあなたが望むようにフォーマットされていない場合は申し訳ありません. これは私の最初の質問投稿であり、目にやさしいように努めました。