Ich habe 2 Klassen, eine Klasse ist meine GUI frameviewer. Das andere ist eine Klasse, die ich versuche, mit meinem Projekt zu verwenden. Die Klasse LabeledBar bietet eine Zeichenmethode. Ich werde eine ArrayList der LabelledBars in meiner FrameViewer-Klasse haben. Ich möchte diese Liste durchlaufen und ein neues Panel mit diesen Balken erstellen. Ich kann nicht recht herausfinden, wie man diese Balken auf diesen Rahmen zeichnet.Wie man erstellt Draw Methoden von einer Klasse auf eine JPanel in einer anderen Klasse
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);
}
}
Das ist mein Verfahren ist aus meiner anderen Klasse in Versuch, eine neue JFrame zu erstellen, die die labeledBars in ihnen enthalten.
private void paintBars()
{
Graphics2D g = (Graphics2D)labeledBarsFrame.getGraphics();
for (LabeledBar element: bars)
{
element.draw(g);
}
//labeledBarsFrame.add(g);
}
Suchen Sie M-V-C oder Model-View-Controller und strukturieren Sie Ihr Programm auf diese Weise. Zeichnen Sie niemals mit einem Graphics-Objekt, das Sie durch Aufruf von 'getGraphics()' für eine Komponente erhalten haben. Zeichnen Sie stattdessen in der paintComponent-Methode eines JPanels. Lesen Sie das Swing Graphics-Tutorial, da das Erraten dieser Dinge ein schlechter Weg ist, um das zu lernen. Links zu den Swing-Tutorials und zu anderen Swing-Ressourcen finden Sie hier: [Swing Info] (http://StackOverflow.com/Tags/Swing/info) –
Sie löschen den Text Ihrer Frage nicht, wenn das Problem gelöst ist . Sie "akzeptieren" die Antwort, die geholfen hat, das Problem zu lösen, damit die Leute wissen, dass das Problem gelöst wurde. – camickr
Der Fragetext wurde zurückgesetzt. Swager, bitte verleugne deine Frage nicht. Diese Seite ist keine persönliche Hilfeseite, sondern eine Frage-/Antwort-Seite, auf der allgemeine Fragen und Antworten für alle veröffentlicht werden können. Indem Sie Ihre Frage unkenntlich machen, machen Sie sie für zukünftige Besucher nicht hilfreich. –