# Raster auf einem JPanel



## MQue (2. Sep 2008)

Hallo,

kann ich auf einem JPanel irgendwie einen Raster machen, z.B. ist das JPanel 400*400 groß und ich möchte einen Raster von 4 Pixel drüberlegen,

Wie könnte ich das am Besten machen?

lg


----------



## Verjigorm (2. Sep 2008)

paintComponent überschreiben und selbst zeichnen oder ein Bild hinterlegen und Panel durchsichtig schalten


----------



## MQue (2. Sep 2008)

Den Raster sollte ich ändern können, also das mit dem Bild fällt dann weg,


Also mein Aufbau schaut momentan so aus, ich hab ein JPanel auf dem sich JButtons und JTextFields befinden,
Über diesen JPanel ist ein zeites JPanel, welches durchsichtig ist, 
die JButtons und die JTextFields kann ich an beliebigen stellen mit der Maus positionieren, 

Daher brauche ich den Raster und ich möchte es auch machen, das die JButtons und TextFelder irgendwie einrasten,

lg


----------



## MQue (2. Sep 2008)

Ist es irgendwie möglich, das JPanel transparent zu schalten und nur den Raster anzuzeigen,

hab momentan diese paintComponents(...)


```
public void paintComponent(Graphics g) {  //hier sollte der Raster gezeichnet werden
       super.paintComponent(g);      
       Graphics2D g2 = (Graphics2D)g;      
            
       g2.setColor(Color.GRAY);
       g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f));
       g2.fillRect(0,0,getWidth(),getHeight());
       g2.dispose();  
    }
```


----------



## Marco13 (2. Sep 2008)

panel.setOpaque(false);
Dann sollte in der super.paintComponent() (glaubich) nicht mehr der Hintergrund gelöscht werden.


----------



## MQue (2. Sep 2008)

Wie könnte ich das mit dem Einrasten machen, hat da jemand eine Idee?


----------



## Josquin (2. Sep 2008)

Das kommt ein Stück weit darauf an, wie Du das machen willst. Wenn Du z.B. die Widgets über die Oberfläche "ziehen" können willst, könntest Du das so machen, daß Du beim ziehen immer schaust, welchem Knotenpunkt der Mauszeiger am nächsten ist, und die Position des Widgets entsprechend setzt. Ein bißchen intellektueller schaut's aus, wenn Du im Prinzip ganz normal "ziehst" und nur, wenn Du Dich innerhalb eines Mindestabstands von einem Rasterpunkt befindest, die Position des Widgets auf diesen Punkt setzt.


----------



## MQue (10. Sep 2008)

Hallo,

ich bin gerade dabei, das ich mir die Knotenbunkte meines Rasters merke,
weiß jemand, wie ich das am Besten machen kann, 
unten zeichne ich zuerst die vertikalen Linien und danach die horizontalen Linien,

Vielen Dank für die Antworten,

lg



```
for (int i = 0; i < w; i++) {                                                         // vertikale Rasterlinien
                g2.drawLine(startX1, 0, startX1, height);
                }
            for (int i = 0; i < h; i++) {                                               // horizontale Rasterlinien
                g2.drawLine(0, startY1, width, startY1);
                }
```


----------



## Michael... (10. Sep 2008)

Michael1234 hat gesagt.:
			
		

> ich bin gerade dabei, das ich mir die Knotenbunkte meines Rasters merke[/code]


das kann je nach Raster und Größe der Komponente ne ganze Menge werden!
Den Abstand des Rasters weiss man ja, von daher kann man sich einen Knotenpunkt in der Nähe errechnen.


----------

