K
ksh84
Gast
Hallo alle zusammen!
habe Probleme mit dem JScrollPane. die Scrollbalken kann ich mir inzwischen immer anzeigen lassen, aber leider nimmt er die Größenveränderungen des zugehören JPanels nicht auf, so dass ich nicht scrollen kann! habe inzwischen alles versucht und komme nicht mehr weiter.
(lese ein XML-Dokument beim Öffnen ein -> die boolsche Variable start wird auf true gesetzt)
wer weiß was?!
habe Probleme mit dem JScrollPane. die Scrollbalken kann ich mir inzwischen immer anzeigen lassen, aber leider nimmt er die Größenveränderungen des zugehören JPanels nicht auf, so dass ich nicht scrollen kann! habe inzwischen alles versucht und komme nicht mehr weiter.
(lese ein XML-Dokument beim Öffnen ein -> die boolsche Variable start wird auf true gesetzt)
wer weiß was?!
Code:
private JScrollPane createPanel3() {
panel3 = new JPanel() {
protected void paintComponent(Graphics g) {
// Lesen der aktuellen Breite und Höhe des Panels
int width = panel3.getWidth();
int height = panel3.getHeight();
// Ende der Box, Anfang der neuen Box
// -> ergeben Koordinaten von Pfeil
int ende=0, anfang, help;
// Erstellen des Pertchart
if (start == true) {
readXML(file);
for (int i = 0; i < d.length; i++) {
// Box wird gezeichnet; Width wird kleiner
// durch Start und Ende
box(g, i, 70+150*i, height/2-50,
height/2+10, height/2, 105, 60);
g.setColor(Color.white);
g.setFont(new Font("Serif", Font.BOLD, 12));
Linebreak.Text(d[i], 18, g, i, 74+150*i, height/2-35);
g.drawString(t[i], 95+150*i, height/2+15);
anfang = 70+150*i;
ende = 175+150*(i-1);
panel3.setMinimumSize(new Dimension(width, ende+205));
// Pfeil am Anfang
if(i==0)
arrow(g, 40, height/2, 70, height/2, 5, 5);
// Pfeile zwischen den Prozessschritten
else if (i>=1 && i<d.length) {
arrow(g, ende, height/2, anfang, height/2, 5, 5);
if(i==d.length-1)
// Pfeil am Ende
arrow(g, 175+130/d.length*i,
height/2, 40, height/2, 5, 5);
}
if(d.length==1)
arrow(g, 155+130/d.length*i,
height/2, 40, height/2, 5, 5);
}
oval(g, ende+105+60, height/2-10, 40, 20);
}
else {
arrow(g, 40, height/2, width-40, height/2, 10, 10);
oval(g, width-40, height/2-10, 40, 20);
}
// Legende wird immer gezeichnet
g.setColor(Color.lightGray);
g.drawLine(0, height-60, width, height-60);
g.drawLine(0, height-59, width, height-59);
g.drawLine(0, height-58, width, height-58);
// Rechtecke
Color blau = new Color(0, 100, 255);
g.setColor(blau);
g.fillRect(100, height-35, 20, 20);
Color hellblau = new Color(0, 200, 255);
g.setColor(hellblau);
g.fillRect(290, height-35, 20, 20);
Color grün = new Color(100, 240, 0);
g.setColor(grün);
g.fillRect(380, height-35, 20, 20);
// Beschriftung
g.setColor(Color.black);
g.setFont(new Font("Serif", Font.BOLD, 15));
g.drawString("Legende:", 10, height-20);
g.drawString("Zusammenbauschritt", 130, height-20);
g.drawString("Dauer", 320, height-20);
g.drawString("Features und Verbindungsinformation", 410,
height-20);
}
};
//Put the drawing area in a scroll pane.
JScrollPane scroller = new JScrollPane(panel3, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scroller.setBackground(Color.white);
scroller.setPreferredSize(new Dimension(700,1000));
scroller.setViewportView(panel3);
return scroller;
}