Swing Anzeige Text in JScrollpane

andi_help

Mitglied
Hallo zusammen,

ich habe ein Problem mit dem JScrollpane.
Ich verwende ein JFrame Rahmen mit der Größe 600*600. Das Layout des JFrames ist BorderLayout. Ich füge in dieses JFrame insgesamt drei JPanels:

- Ein JPanel an Position (0,0) mit size(100, 600)
- Ein JPanel an Position (100,0) mit size(500, 50)
- Das Hauptpanel MyPanel ist an Position (100,50) mit size(500,600)

Innerhalb von Rahmen will ich jetzt MyPanel an ein JScrollPane übergeben und in das MyPanel z.B. einen String an Position (20, 20) des MyPanels schreiben. Hier tritt dann auch das Problem auf, da der String an die Position (20,20) von Rahmen geschrieben wird.
Ich habe es schon jetzt mit setViewPort(MyPanel) versucht, was leider nicht funktioniert hat. Könnt ihr mir bitte weiterhelfen?

Anbei noch der Sourcecode:
Java:
public class Rahmen extends JFrame {
	public JPanel Button_Panel;
	public JLabel patternLabel1;
	public JPanel Selection_Panel;
	public JPanel MyPanel;
	public JScrollPane scrollpane;
		
	Rahmen(){
		//Deklaration der Parameter des Hauptfensters
		super("Test");	
		this.setVisible(true);
		this.setSize(600,600);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setLayout(new BorderLayout());
		
		//JPanel mit Labels wird eingefügt
		Button_Panel=new JPanel();
		Button_Panel.setVisible(true);
		Button_Panel.setSize(500,50);
		Button_Panel.setLocation(100,0);
		Button_Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		patternLabel1 = new JLabel("Radius Stelle:");
		patternLabel1.setFont(new Font("Arial", Font.PLAIN, 12));
		Button_Panel.add(patternLabel1);
		this.add(Button_Panel);
		
		//JPanel mit verschiedenen Auswahlmöglichkeiten (aus Platzgründen nicht dargestellt)
		Selection_Panel=new JPanel(); 
		Selection_Panel.setSize(100,500);
		Selection_Panel.setLocation(0,0);
		this.add(Selection_Panel);
		
		//JPanel MyPanel als Hauptfenster
		MyPanel=new JPanel();
		add(MyPanel);
		
		
		//Übergabe von MyPanel an Scrollpan		
		scrollpane = new JScrollPane();
		scrollpane.setViewportView(MyPanel);
		scrollpane.setPreferredSize(new Dimension(500,500));
		this.add(scrollpane);	
	}
	
	//Klasse MyPanel inklusive Methode paintComponent
	class MyPanel extends JPanel{
		MyPanel() {
			setVisible(true);
			setSize(500,500);
			setLocation(0,0);		
		}
		
		public void paintComponent(Graphics g){
			super.paintComponent(g); 
			Graphics2D g2D=(Graphics2D) g;
			g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
			g2D.drawOval(100,100,150,150);		
		}
	}
	
	public static void main(String[] args) {
		Rahmen rahmen=new Rahmen();		
	}
}

Vielen Dank schon mal!
 

Marco13

Top Contributor
setVisible(true) ist unnötig, und setLocation und setSize hat keinen Effekt, wenn man LayoutManager verwendet. Variablennamen richtig wählen, nicht "BuTtOn__PaNeL" sondern "buttonPanel". Wenn man zu einem Container, der ein BorderLayout hat, eine Component hinzufügt, muss man ihm sagen, wo die Component hinsoll:
this.add(scrollpane, BorderLayout.CENTER);
this.add(buttonPanel, BorderLayout.NORTH);
usw.

FAQ: http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/109662-borderlayout.html
 

andi_help

Mitglied
Vielen Dank für den Hinweis, das war sehr hilfreich. Daraufhin habe ich den Code mal entsprechend angepasst. Jetzt sehe ich zumindest die richtig gezeichneten Elemente.
Mein Problem besteht jetzt nur noch darin, dass die Scroll-Leiste nicht korrekt angezeigt wird. Ich zeichne jetzt ein Element außerhalb des vorgegebenen Rahmens und es wird kein Balken angezeigt, mittels dessen ich nach rechts bzw. nach unten scrollen kann. Könnt ihr mir nochmal helfen? Vielen Dank schon mal !!

Java:
public class Rahmen extends JFrame {
    public JPanel Button_Panel;
    public JLabel patternLabel1;
    public JPanel Selection_Panel;
    public JPanel MyPanel;
    public JScrollPane scrollpane;
        
    Rahmen(){
        //Deklaration der Parameter des Hauptfensters
        super("Test");  
        this.setVisible(true);
        this.setSize(600, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.getContentPane().setLayout(new BorderLayout());
        
        //JPanel mit Labels wird eingefügt
        Button_Panel=new JPanel();
        Button_Panel.setVisible(true);
        Button_Panel.setLayout(new FlowLayout(FlowLayout.LEFT));
        
        patternLabel1 = new JLabel("Radius Stelle:");
        patternLabel1.setFont(new Font("Arial", Font.PLAIN, 12));
        Button_Panel.add(patternLabel1);
        this.add(Button_Panel, BorderLayout.NORTH);
        
        //JPanel mit verschiedenen Auswahlmöglichkeiten 
        Selection_Panel=new JPanel();
        JButton button=new JButton("Test");
        Selection_Panel.add(button);
        this.add(Selection_Panel, BorderLayout.WEST);
        
        //JPanel MyPanel als Hauptfenster
        MyPanel=new MyPanel();
        this.add(MyPanel, BorderLayout.CENTER);
        MyPanel.repaint();
               
        //Übergabe von MyPanel an Scrollpan     
        scrollpane = new JScrollPane(MyPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollpane.setPreferredSize(new Dimension(400,400));
        this.add(scrollpane, BorderLayout.CENTER);
        MyPanel.repaint();
        scrollpane.setVisible(true);      
    }
    
    public static void main(String[] args) {
        Rahmen rahmen=new Rahmen();     
    }
}
sowie die Klasse MyPanel
Java:
class MyPanel extends JPanel{
        MyPanel() {
            super();
            setVisible(true);  
        }
        
        @Override 
        public void paintComponent(Graphics g) {
            super.paintComponent(g);      
            g.drawLine(10, 10, 10, 50 );
            g.drawRect(20, 40, 30, 20);
            g.drawRect(500, 450, 30, 20);
            g.drawOval(30, 30, 20, 20);      
        }
}
Nochmals vielen Dank
 

GUI-Programmer

Top Contributor
1. Wenn du das Borderlayout benutzt, solltest du bei deinen Komponenten, welche du nicht an Position CENTER anordnest, die PreferredSizes bestimmen.

2. Entferne die Zeilen 34, 35 und 43 und es sollte funktionieren.
 

andi_help

Mitglied
ich habe mal für die Komponenten, die nicht auf Center sind, die PreferredSizes gesetzt und die Zeilen 34, 35 und 42 gelöscht.
Leider ohne Erfolg..Habt ihr noch Ideen?
Bin da gerade etwas ratlos..
 

Marco13

Top Contributor
setVisible auf den Components ist überflüssig. Aber auf dem JFrame muss man es aufrufen, aber wichtig: Erst GANZ am Ende, wenn der Frame fertig gebaut ist.

Java:
import javax.swing.*;
import java.awt.*;

public class Rahmen extends JFrame {
    public JPanel Button_Panel;
    public JLabel patternLabel1;
    public JPanel Selection_Panel;
    public JPanel MyPanel;
    public JScrollPane scrollpane;

    Rahmen(){
        //Deklaration der Parameter des Hauptfensters
        super("Test");
        this.setSize(600, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.getContentPane().setLayout(new BorderLayout());

        //JPanel mit Labels wird eingefügt
        Button_Panel=new JPanel();
        Button_Panel.setLayout(new FlowLayout(FlowLayout.LEFT));

        patternLabel1 = new JLabel("Radius Stelle:");
        patternLabel1.setFont(new Font("Arial", Font.PLAIN, 12));
        Button_Panel.add(patternLabel1);
        this.add(Button_Panel, BorderLayout.NORTH);

        //JPanel mit verschiedenen Auswahlmöglichkeiten
        Selection_Panel=new JPanel();
        JButton button=new JButton("Test");
        Selection_Panel.add(button);
        this.add(Selection_Panel, BorderLayout.WEST);


        //Übergabe von MyPanel an Scrollpan
        MyPanel=new MyPanel();
        scrollpane = new JScrollPane(MyPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollpane.setPreferredSize(new Dimension(400,400));
        this.add(scrollpane, BorderLayout.CENTER);

        // Frame erst GANZ am Ende sichtbar machen!
        this.setVisible(true);
    }

    public static void main(String[] args) {
        Rahmen rahmen=new Rahmen();
    }
}

class MyPanel extends JPanel{
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawLine(10, 10, 10, 50 );
            g.drawRect(20, 40, 30, 20);
            g.drawRect(500, 450, 30, 20);
            g.drawOval(30, 30, 20, 20);
        }
}


Nochmal die konkrete Frage: Was passt da jetzt nicht? ???:L
 

andi_help

Mitglied
Hi,
danke für den Hinweis.
Ich zeichne ja vier Elemente, von denen drei im Sichtfenster angezeigt werden. Zum vierten Element komme ich ja nur, wenn ich das Fenster vergrößere. Sollte das nicht mit hinscrollen funktionieren?

Sorry, wenn ich schon wieder nachfrage, aber das verstehe ich gerade nicht so ganz..
 
G

Gast2

Gast
Du musst noch die Größe vom myPanel setzen:
Java:
MyPanel.setPreferredSize(new Dimension(600,600));
Ansonsten ist das Panel immer exakt so groß wie das ScrollPane.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
kodela Swing Anzeige des Warten-Cursors AWT, Swing, JavaFX & SWT 8
kodela Verspätete Anzeige in Textfeldern AWT, Swing, JavaFX & SWT 8
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
F Design-Anzeige im Windowbuilder AWT, Swing, JavaFX & SWT 3
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
D JavaFX Control zur Anzeige von eBooks AWT, Swing, JavaFX & SWT 5
javampir Swing Anzeige der FileFilter im JFileChooser AWT, Swing, JavaFX & SWT 0
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
V JWindow: Falsche Anzeige auf Ubuntu AWT, Swing, JavaFX & SWT 2
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
M AWT Gui anzeige Probes - Elemente erscheinen nicht regelmäßig AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
P Swing Problem mit der Anzeige AWT, Swing, JavaFX & SWT 12
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
M Anzeige updatet sich erst am Ende des Programms AWT, Swing, JavaFX & SWT 3
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
A Swing JFileChooser - Anzeige in Echtzeit filtern AWT, Swing, JavaFX & SWT 10
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
M TabbpedPane Anzeige aktualisieren AWT, Swing, JavaFX & SWT 6
S Anzeige von Beschleunigungswerten AWT, Swing, JavaFX & SWT 2
S Anzeige eines JWindows AWT, Swing, JavaFX & SWT 3
N jcomboBox anderer Wert als Anzeige AWT, Swing, JavaFX & SWT 6
B Swing Java crashed nach Anzeige JOptionePane AWT, Swing, JavaFX & SWT 20
S Probleme mit Anzeige von JComboBox AWT, Swing, JavaFX & SWT 2
J Anzeige AWT, Swing, JavaFX & SWT 5
F Verzögerung bei der ersten Anzeige AWT, Swing, JavaFX & SWT 6
timbeau Gitter in Sudoko-Anzeige AWT, Swing, JavaFX & SWT 9
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
D Swing Anzeige während eines Ladevorganges AWT, Swing, JavaFX & SWT 6
N Eigener Grafik Editor mit fehlerhafter Anzeige AWT, Swing, JavaFX & SWT 4
C SWT SWT Browser anzeige bug AWT, Swing, JavaFX & SWT 3
A Einschreiten vor anzeige eines Frames AWT, Swing, JavaFX & SWT 26
P JTree - Explorer mit nur eingeschränkter Anzeige AWT, Swing, JavaFX & SWT 17
J Verzögerung bei Änderungen der Anzeige abwarten AWT, Swing, JavaFX & SWT 5
T SWT Keine Anzeige der Widgets nach Comboauswahl AWT, Swing, JavaFX & SWT 2
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
B SWT Textdatei Lesen und Anzeige in View - Zeichensatzproblem AWT, Swing, JavaFX & SWT 4
hdi JTree: interne Daten OK, Anzeige schwarze Magie AWT, Swing, JavaFX & SWT 2
R Anzeige der Aktivität AWT, Swing, JavaFX & SWT 3
S Splash Screen / "Loading" Anzeige im Programm AWT, Swing, JavaFX & SWT 27
S JTree - Anzeige des Knotennamen ändern AWT, Swing, JavaFX & SWT 2
B JList Anzeige aktualisieren (Models) AWT, Swing, JavaFX & SWT 2
G Keine Anzeige des Balkens AWT, Swing, JavaFX & SWT 3
C JTable aktualisiert die Anzeige nicht AWT, Swing, JavaFX & SWT 2
G Anzeige schwierigkeiten AWT, Swing, JavaFX & SWT 3
G Problem mit Anzeige von HTML AWT, Swing, JavaFX & SWT 5
P JRE 6 -> ToolTip & mnemonic Anzeige AWT, Swing, JavaFX & SWT 4
G JComboBox - Anzeige mit Wert verknüpfen AWT, Swing, JavaFX & SWT 3
G Anzeige Problem AWT, Swing, JavaFX & SWT 4
D Anzeige eines Bildes: JPanel oder JLabel ? AWT, Swing, JavaFX & SWT 3
T dynamische anzeige? AWT, Swing, JavaFX & SWT 4
W JList Anzeige erneuern AWT, Swing, JavaFX & SWT 4
P JMenuBar und JToolBar Anzeige Probleme AWT, Swing, JavaFX & SWT 5
T JComboBox anzeige AWT, Swing, JavaFX & SWT 6
F Anzeige von JPanel AWT, Swing, JavaFX & SWT 3
M JTree und Anzeige des entsprechenden Panels AWT, Swing, JavaFX & SWT 5
K Probleme mit der Anzeige eines einzigen Nodes in einem JTree AWT, Swing, JavaFX & SWT 9
S SWT-Widgets für Anzeige-Elemente AWT, Swing, JavaFX & SWT 3
G Keine Anzeige von Grafik bei externem paintComponent-Aufruf AWT, Swing, JavaFX & SWT 2
M GUI mit Swing erst nach Maximieren richtige Anzeige AWT, Swing, JavaFX & SWT 2
S Anzeige der Benutzeroberfläche verzögern AWT, Swing, JavaFX & SWT 10
G Anzeige von JTextField erneuern AWT, Swing, JavaFX & SWT 12
P DefaultTreeCellEditor -> Anzeige Probleme AWT, Swing, JavaFX & SWT 3
swek Flackernde Anzeige AWT, Swing, JavaFX & SWT 4
C Schweres Problem mit JDialog und Threads! Anzeige blockiert! AWT, Swing, JavaFX & SWT 5
A JTree-Anzeige filtern AWT, Swing, JavaFX & SWT 7
R Anfängerfrage:anzeige von Gui elementen AWT, Swing, JavaFX & SWT 2
W Anzeige von anderen Bildformaten: BMP, TIFF, PCX AWT, Swing, JavaFX & SWT 5
S Anzeige einer Progressbar. AWT, Swing, JavaFX & SWT 3
G Komponente zur Anzeige einer Textdatei. AWT, Swing, JavaFX & SWT 10
G JList: Anzeige von null-Werten verhindern AWT, Swing, JavaFX & SWT 3
I Problem mit korrekter Anzeige AWT, Swing, JavaFX & SWT 2
G Gibts ne Klasse zur Anzeige von Ziffern? AWT, Swing, JavaFX & SWT 4
S Anzeige-Wirrwar in JScrollbar AWT, Swing, JavaFX & SWT 3
B Anzeige eines SpinnerNumberModel AWT, Swing, JavaFX & SWT 3
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben