2009-04-12 14 views
0

私はこれが愚かな質問になることを知っています。 CSにn00bとしてご容赦くださいスイングコントロールを均等に分割する

JComponentから継承する新しいスイングコンポーネントがあります。 私は、線がコントロールを均等な部分に分割していることを示すために、そのサーフェスに線をペイントしようとしています。 。コードは

int spc; 
spc = (int) Math.round((this.ZBar.getWidth()/this.ZBar.getModel().getModelSize())); 

     for (int i = 0; i <= this.ZBar.getModel().getModelSize(); i++) { 
      g.drawLine(i * spcing, 0, i *, this.ZBar.getHeight()); 

     } 

this.ZBar.getModel()getModelSize()のように見えます。分割する部品の数を指定します。 しかし、場合によっては、コンポーネントの右端にもう少し余裕があります。私はそれがMath.roundによって行われた型変換へのガウスだと思います。これをどうすれば解決できますか?

答えて

0

は返事をありがとうございました。 これを解決しました。

私はこれらのすべての整数を2倍にしました。 次に、Java2Dパッケージを使用して倍精度を処理します。

Doubleパラメータを使用したLine2Dクラスのサポートの作成。

0

あなたが投稿したコードは、構文エラーのためにコンパイルされませんが、私はあなたのアプローチに直ちに問題はないと考えています。あなたは、問題が断続的に現れていると言いました。これは、スイングの方法が問題になることを示唆しています。また、スイングがコード内でどのように処理されるかを示します。それを読んでみてください。

1

この除算はint型除算であるためです。例:

5/2 == 2 

ここでは何も行われていません。既に丸められています(代わりにMath.floorとして)。あなたの意図した効果を得るために

は、分割前のdoubleにint型にキャスト:

(double)5/2 == 2.5 

またはあなたの特定のケースでは:

spc = (int) Math.round(((double)this.ZBar.getWidth()/this.ZBar.getModel().getModelSize())); 
関連する問題