Hallo zusammen,
ich versuche recht einfach ein paar Vierecke auf ein Jpanel zu zeichnen und das ganze dann scrollbar anzuzeigen. Hierfür habe ich eine neue Klasse von JPanel abgeleitet und die paintComponet() Methode überschrieben. Das neue Jpanel Objekt übergebe ich dann an ein JScrollpane.
Die Anzeige klappt auch soweit. Jedoch verschwinden die zuvor gezeichneten Vierecke nachdem ich vor und wieder zurück scrolle.
Hat jemand eine Idee was ich falsch mache? Ich habe hierzu schon einige Threads gelesen diese bezogen sich aber immer auf Bilder. Ich wäre für eure Hilfe sehr sehr Dankbar
Hier der bisherige Code:
ich versuche recht einfach ein paar Vierecke auf ein Jpanel zu zeichnen und das ganze dann scrollbar anzuzeigen. Hierfür habe ich eine neue Klasse von JPanel abgeleitet und die paintComponet() Methode überschrieben. Das neue Jpanel Objekt übergebe ich dann an ein JScrollpane.
Die Anzeige klappt auch soweit. Jedoch verschwinden die zuvor gezeichneten Vierecke nachdem ich vor und wieder zurück scrolle.
Hat jemand eine Idee was ich falsch mache? Ich habe hierzu schon einige Threads gelesen diese bezogen sich aber immer auf Bilder. Ich wäre für eure Hilfe sehr sehr Dankbar
Hier der bisherige Code:
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
/**
*
* @author
*/
public class Zeichnen {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DrawPanel dp = new DrawPanel();
dp.setPreferredSize(new Dimension(1024, 720));
JScrollPane sp = new JScrollPane(dp);
sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
//sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
sp.setWheelScrollingEnabled(true);
JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setSize(new Dimension(800, 600));
f.setResizable(false);
f.add( sp );
f.setVisible( true );
// TODO code application logic here
}
}
class DrawPanel extends JPanel {
private int x=10,y=0;
@Override
protected void paintComponent( Graphics g )
{
super.paintComponent( g );
for(int i=0; i<100;i++){
g.drawRect(x, y, 10, 10);
y+= 30;
}
}
}