Hallo,
wünsche allen ein gutes neues Jahr 2025!
Ich habe ein Problem. Ich habe ein JPanel (unten pSP), in dass ich eine JScrollpane (unten mainSP) gesteckt habe in der wiederum ein JLayeredPane (myPanel) ist. Auf diesem lasse ich ein Gitter zeichnen (siehe Screenshot). Komischerweise werden die Linien beim Resizen des Fensters weiter gezeichnet (im Screenshot blau markiert). Wieso das?
Das JPanel (im Code unten das mainSP) habe ich mit dem Designer in Netbeans erzeugt.
Hier der Code, der die Panels etc. erstellt.
Im Konstruktor der JLayeredPane (myPanel) steht dies:
Hier lasse ich im MyPanel die Linien zeichnen:
Bin für jede Idee dankbar!
wünsche allen ein gutes neues Jahr 2025!
Ich habe ein Problem. Ich habe ein JPanel (unten pSP), in dass ich eine JScrollpane (unten mainSP) gesteckt habe in der wiederum ein JLayeredPane (myPanel) ist. Auf diesem lasse ich ein Gitter zeichnen (siehe Screenshot). Komischerweise werden die Linien beim Resizen des Fensters weiter gezeichnet (im Screenshot blau markiert). Wieso das?
Das JPanel (im Code unten das mainSP) habe ich mit dem Designer in Netbeans erzeugt.
Hier der Code, der die Panels etc. erstellt.
Java:
// MyPanel erbt von JPanel
myPanel = new MyPanel(anzahlSpalten, anzahlStunden, this);
// mainSP ist die JScrollpane
mainSP.add(myPanel);
mainSP.setViewportView(myPanel);
// pSP ist das Panel, in das alles rein kommt
pSP.add(mainSP, BorderLayout.CENTER);
Im Konstruktor der JLayeredPane (myPanel) steht dies:
Java:
public MyPanel(int anzahlSpalten, int anzahlStunden, GroupsFrameTest parent) {
super();
setLayout(new BorderLayout());
this.anzahlZeilen = anzahlStunden * 12;
this.anzahlSpalten = anzahlSpalten;
setSize(anzahlSpalten * 9, (anzahlZeilen) * 10);
setPreferredSize(new Dimension(anzahlSpalten * 9, (anzahlZeilen) * 10));
...
}
Hier lasse ich im MyPanel die Linien zeichnen:
Java:
@Override
public void paintComponent(Graphics g2) {
int yAbstand = PlanerDefaults.MINUTEN_ABSTAND_PIXEL;
int spaltenBreite = PlanerDefaults.COLWIDTH;
// senkrechte Striche zeichnen
for (int col = 0; col < anzahlSpalten + 1; col++) {
g2.drawLine(col * spaltenBreite, 0, col * spaltenBreite, getHeight());
}
// waagrechte Striche zeichnen
for (int row = 0; row < anzahlZeilen + 1; row++) {
if (row % 12 == 0) {
g2.setColor(Color.black);
g2.drawString(" " + row, 0, row * yAbstand);
} else {
g2.setColor(Color.lightGray);
}
g2.drawLine(0, row * yAbstand, getWidth(), row * yAbstand);
}
drawMarking(g2);
}
Bin für jede Idee dankbar!