Aktualisieren eines JScrollPane

Status
Nicht offen für weitere Antworten.
K

Kaspar E.

Gast
Hallo,

Mein Problem ist folgendes: Ich habe ein JPanel in einem JScrollpane, ersteres berechnet seine Länge bei jedem paintComponent neu (und setzt die Grösse mit setPreferredSize(...)). Wie kann ich das JScrollPane dazu bringen, dass es seine Scrollbalken an die neue Grösse anpasst ? (Habe (re-)validate() und repaint() (?) schon erfolglos ausprobiert und finde im Netz nichts, was mir weiterhilft.) [JPanel].setPreferredSize([dimension]) ist der entsprechende Befehl für die gewünschte Grösse des Panels im ScrollPane, oder nicht ?

Vielen Dank !
Kaspar
 

André Uhres

Top Contributor
Kaspar E. hat gesagt.:
..Ich habe ein JPanel in einem JScrollpane, ersteres berechnet seine Länge bei jedem paintComponent neu (und setzt die Grösse mit setPreferredSize(...)). Wie kann ich das JScrollPane dazu bringen, dass es seine Scrollbalken an die neue Grösse anpasst ?..
Es ist nicht zu empfehlen setPreferredSize in paintComponent aufzurufen.
Statt dessen sollte man getPreferredSize überschreiben.
Die Implementierung hängt aber davon ab, was du machen willst. Deshalb wäre es vielleicht gut, deinen Code zu posten.
Hier ist aber schonmal ein kleines Beispiel:
Code:
package layout;
/*
 * ResizingGraphicDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ResizingGraphicDemo extends JFrame implements ChangeListener{
    private JScrollPane scroller;
    private MyPanel panel;
    private JButton btStart, btStop;
    private JToolBar toolbar;
    public ResizingGraphicDemo() {
        super("Resizing Graphic Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        initToolbar();
        scroller = new JScrollPane();
        panel = new MyPanel(200,150);
        scroller.setViewportView(panel);
        add(scroller);
        scroller.getViewport().addChangeListener(this);
    }
    private void initToolbar() {
        toolbar = new JToolBar();
        btStart = new JButton("Start");
        btStop = new JButton("Stop");
        toolbar.add(btStart);
        toolbar.add(btStop);
        getContentPane().add(toolbar, BorderLayout.PAGE_START);
        btStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                panel.start();
            }
        });
        btStop.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                panel.stop();
            }
        });
    }
    public static void main(String args[]) {
        new ResizingGraphicDemo().setVisible(true);
    }
    public void stateChanged(ChangeEvent e) {
        panel.repaint();
    }
}
class MyPanel extends JPanel implements ActionListener{
    private int w, h;
    private Timer timer = new Timer(10,this);
    private int increment = 1;
    public MyPanel(int w, int h){
        this.w = w;
        this.h = h;
    }
    public Dimension getPreferredSize(){
        return new Dimension(w,h);
    }
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawOval(0,0,w,h);
    }
    public void actionPerformed(ActionEvent e) {
        if(w == 500) 
            increment = -1;
        if(w == 200) 
            increment = 1;
        w += increment;
        h += increment;
        revalidate();
        repaint();
    }
    public void start() {
        timer.start();
    }
    public void stop() {
        timer.stop();
    }
}
 
K

Kaspar E.

Gast
Vielen Dank für dieses Code-Beispiel !

Mein Überlegungs'fehler':
Ich hatte die Methode revalidate() (und viele andere Methoden, da ich nicht sicher war, ob es wirklich mit revalidate() funktionieren sollte) des Scrollpane aufgerufen - es sollte sich ja eigentlich aktualisieren (die Scrollbalken anpassen). Die Lösung ist (wie ich im Code-Beispiel gesehen habe), dass man revalidate() beim Panel aufrufen muss, was dann auch problemlos klappt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing Aktualisieren eines JPanels nach Tasteneingabe AWT, Swing, JavaFX & SWT 2
A Swing Aktualisieren eines JPanels AWT, Swing, JavaFX & SWT 13
Y Swing Aktualisieren eines JPanel mit ArrayList im TableLayout AWT, Swing, JavaFX & SWT 2
G Aktualisieren eines Thread? AWT, Swing, JavaFX & SWT 7
R Name eines Tabs aktualisieren AWT, Swing, JavaFX & SWT 2
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M Muss man die ObservableList aktualisieren? AWT, Swing, JavaFX & SWT 3
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
M JavaFX Automatisches Aktualisieren der Seite AWT, Swing, JavaFX & SWT 26
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
C JavaFX TreeTableView aktualisieren AWT, Swing, JavaFX & SWT 10
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
2 Zeit Differenz automatisch aktualisieren AWT, Swing, JavaFX & SWT 1
N JavaFX Stage aktualisieren AWT, Swing, JavaFX & SWT 5
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
O Statusleiste mit JLabel aktualisieren AWT, Swing, JavaFX & SWT 5
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
T Int-Wert aktualisieren? AWT, Swing, JavaFX & SWT 9
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J GUI/Random aktualisieren? AWT, Swing, JavaFX & SWT 3
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
P Swing Aktualisieren von JFrame in einem onClick-Ereignis AWT, Swing, JavaFX & SWT 11
B JTable aktualisieren AWT, Swing, JavaFX & SWT 22
K SWT DataBinding, Anzahl der Zeilen aktualisieren AWT, Swing, JavaFX & SWT 4
G JRadioButton aktualisieren nicht... AWT, Swing, JavaFX & SWT 10
C ToolTip aktualisieren AWT, Swing, JavaFX & SWT 2
D Swing JComboBox aktualisieren AWT, Swing, JavaFX & SWT 4
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
S Inhalt einer JComboBox aktualisieren AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
A JButton in einem Array aktualisieren AWT, Swing, JavaFX & SWT 8
Kenan89 JTable aktualisieren AWT, Swing, JavaFX & SWT 21
B Swing Fensterinhalt aktualisieren AWT, Swing, JavaFX & SWT 11
S Spezielle komponente aktualisieren AWT, Swing, JavaFX & SWT 9
V Swing JProgressBar aktualisieren AWT, Swing, JavaFX & SWT 14
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
C jTable aktualisieren AWT, Swing, JavaFX & SWT 2
M TabbpedPane Anzeige aktualisieren AWT, Swing, JavaFX & SWT 6
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
P AWT Fenster aktualisieren, nachdem ich JComboBox ändere AWT, Swing, JavaFX & SWT 9
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
M Swing JLabel (mit einer Grafik) aktualisieren AWT, Swing, JavaFX & SWT 2
S JTable - Aktualisieren / Neu zeichnen. AWT, Swing, JavaFX & SWT 5
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
M Zeichnung aktualisieren AWT, Swing, JavaFX & SWT 3
D Swing JTextField aus anderer Klasse aktualisieren AWT, Swing, JavaFX & SWT 2
L GUI aktualisieren? AWT, Swing, JavaFX & SWT 4
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
M Swing Aktualisieren von laufenden Anwendungen AWT, Swing, JavaFX & SWT 10
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
J JLabel aktualisieren AWT, Swing, JavaFX & SWT 8
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
K Swing JTable Model aktualisieren AWT, Swing, JavaFX & SWT 2
K LayoutManager Borderlayout - NORTH aktualisieren AWT, Swing, JavaFX & SWT 10
C JMenuBar aktualisieren? AWT, Swing, JavaFX & SWT 2
K JTable aktualisieren AWT, Swing, JavaFX & SWT 9
M JFrame aktualisieren/refreshen? AWT, Swing, JavaFX & SWT 4
A Haupt JFrame inkl. aller Komponenten aktualisieren? AWT, Swing, JavaFX & SWT 3
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing JTable nach einer Änderung einer Zelle komplett aktualisieren. AWT, Swing, JavaFX & SWT 10
D Swing JLabels in einer Schleife aktualisieren AWT, Swing, JavaFX & SWT 2
H UI aktualisieren AWT, Swing, JavaFX & SWT 9
R Tab-Inhalte aktualisieren AWT, Swing, JavaFX & SWT 4
B Swing JFreeCharts echtzeit Charts bzw Aktualisieren von Charts AWT, Swing, JavaFX & SWT 8
D JTree zur richtigen Zeit aktualisieren. AWT, Swing, JavaFX & SWT 3
S JTable aktualisieren AWT, Swing, JavaFX & SWT 4
U JTable in einem Tab aktualisieren aus anderem Tab heraus initiiert AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben