私は2つのクラスを持っていますが、1つのクラスは私のGUIフレームビューアです。もう1つは、自分のプロジェクトで使用しようとしているクラスです。 LabeledBarクラスはdrawメソッドを提供します。私は自分のFrameViewerクラスにLabeledBarsのArrayListを持っています。私はそのリストを繰り返して、これらのバーを保持する新しいパネルを作成したいと思います。私はこれらのバーをそのフレームにどのように描くのかを決めることはできません。使い方を作成する方法クラスから別のクラスのJPanelにメソッドを描画します
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Line2D;
/** LabeledBar is a rectangle with an interior label.
*
*
*/
public class LabeledBar
{
private int xLeft;
private int yTop;
private int width;
private int height;
private String label;
private Color color;
/** Construct this object from the specified dimensions.
* @param x x coordinate of the upper-left corner of this bar.
* @param y y coordinate of the upper-left corner of this bar.
* @param aWidth width of the bar in pixels.
* @param label the text to be displayed inside the bar.
* @param color desired color of the lines of the bar.
*/
public LabeledBar(int x, int y, int aWidth, String label, Color color)
{
xLeft = x;
yTop = y;
width = aWidth;
height = 20;
this.label = label;
this.color = color;
}
/** Draw this bar on the supplied graphics context.
* @param g2 the context on which to draw this bar.
*/
public void draw(Graphics2D g2)
{
Rectangle leftRectangle = new Rectangle(
xLeft, yTop,
width, height);
g2.setColor(color);
g2.draw(leftRectangle);
g2.drawString(label, xLeft+height/4, yTop+height*3/4);
}
}
これは私の他のクラスのメソッドで、labeledBarsを含む新しいJFrameを作成しようとしたときの方法です。
private void paintBars()
{
Graphics2D g = (Graphics2D)labeledBarsFrame.getGraphics();
for (LabeledBar element: bars)
{
element.draw(g);
}
//labeledBarsFrame.add(g);
}
M-V-Cまたはモデルビューコントローラをルックアップして、この方法でプログラムを構成します。コンポーネント上で 'getGraphics()'を呼び出して取得したGraphicsオブジェクトを使用して描画しないでください。代わりに、JPanelのpaintComponentメソッド内に描画します。 Swing Graphicsチュートリアルを読むと、このことを推測することは、それを行う方法を学ぶ悪い方法です。 Swingチュートリアルへのリンクと他のSwingリソースへのリンクはここにあります:[Swing Info](http://stackoverflow.com/tags/swing/info) –
問題が解決したら、あなたの質問のテキストを削除しないでください。問題を解決するのに役立つ回答を「受け入れる」ことで、人々は問題が解決されたことを知ることができます。 – camickr
質問テキストがロールバックされました。スウェーガー、あなたの質問を否定してはいけない。このサイトは個人的なヘルプサイトではなく、一般的な質問とそこにある回答が掲載されており、すべての人が見ることができ、誰もが得ることができる質問/回答サイトです。あなたの質問を破ることによって、あなたはそれを将来の訪問者に完全に役に立たないようにします。 –