Ich versuche ein Raster zu zeichnen. Spalte x Zeile ist beispielsweise 5x6. Mein Problem ist, dass die Zeilenenden im Osten und Süden die angegebenen Spalten- und Zeilenwerte überschreiten. Es ist nicht groß, nur ein Millimeter vielleicht, aber immer noch nervig. Ich möchte, dass das Gitter wie ein Rechteck mit 20 Zellen aussieht. Wo ist der Fehler in meinem Code? Das Code-Snippet, das dieses fehlerhafte Raster zeichnet, ist unten. Danke!Warum überschreiten die Zeilenenden in meinem Raster die angegebene Breite und Höhe dieses Rasters?
package Main;
import java.awt.Dimension;
import javax.swing.JFrame;
public class GridMain {
public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.setPreferredSize(new Dimension(640, 730));
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mypanel mypanel = new Mypanel(5,6);
jframe.add(mypanel);
jframe.pack();
jframe.setVisible(true);
}
}
package Main;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Mypanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private int height;
private int width;
private int gapBetweenPoints = 20;
private int gapBetweenFrameAndGrid=15;
public Mypanel(int columns, int rows) {
width = columns;
height = rows;
}
protected void paintComponent(Graphics g) {
for (int i =0 ; i < height; i++) {
g.drawLine(gapBetweenFrameAndGrid, i * gapBetweenPoints
+ gapBetweenFrameAndGrid, width * gapBetweenPoints, i
* gapBetweenPoints + gapBetweenFrameAndGrid);
}
for (int i = 0; i < width; i++) {
g.drawLine(i * gapBetweenPoints + gapBetweenFrameAndGrid,
gapBetweenFrameAndGrid, i * gapBetweenPoints + gapBetweenFrameAndGrid,
height * gapBetweenPoints);
}
}
}
lustig, wenn ich subtrahieren 5 aus (Breite * gapBetweenPoints) in der ersten for-Schleife und aus (Höhe * gapBetweenPoints) in der zweiten Schleife i erhalten das Ergebnis, das ich will .. aber das ist natürlich nicht, wie wir Dinge tun :-) – melar