Swing JScrollPane

Soloeco

Aktives Mitglied
Moin,
aktuell habe ich ein JFrame und nun möchte ich, mittels einer Methode, die hier unrelevant ist, ganz viel Text auf dem Bildschirm anzeigen lassen. Dabfür dachte ich zunächst daran, dem Frame ein Panel zuzuweisen, auf welchem ein JScrollpane und ein JTextPane sind.

Jetzt meine Fragen .. Ist es sinnvoll für viel Text ein JTextPane zu verwenden? Und wie programmiere ich das ScrollPane? Bei mir hat das nie geklappt und stehe aktuell auf dem Schlauch. Kann mir wer bitte einen Denkanstoß geben?

Danke und freundliche Grüße!
 

Robat

Top Contributor
Poste doch bitte den relevanten Code.
So kann man gemeinsam an deinem Code an einer Lösung arbeiten :)

Gruß Robert
 

Soloeco

Aktives Mitglied
Okay, also dann hier den relevanten Teil :)


Java:
public class FrameInit extends JFrame {
   
    public static void main(String[] args) {
        new FrameInit();
    }
   
    public FrameInit() {
        super("Fenster");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setVisible(true);
       
        JPanel panel = new JPanel();
        panel.setBackground(Color.black);
        add(panel);
       
        JScrollPane scroll = new JScrollPane(panel);
       
        JTextPane area = new JTextPane();
        panel.add(area);
    }
}

So, hier habe ich versucht dem Fenster ein panel hinzuzufügen, diesem ein ScrollPane und TextPane, jedoch bekomme ich es mit dem scrollpane einfach nicht auf die Reihe.
Was ich quasi eigentlich nur haben möchte ist ein großes Textfeld auf dem text mittels einer methode geschrieben wird und dann automatisch mitscrollt und das dort oben war mein Ansatz, falls es bessere ideen gibt gerne mir mitteilen :)
 

Robat

Top Contributor
Der Ansatz ist ja schon mal richtig.

Du musst aber anstatt panel dein scroll hinzufügen :)
Und anstatt das Panel dem Konstruktor zu übergeben benutz bitte #setViewportView(..) :)

Zwei Hinweise noch:
- Man erbt nicht von JFrame wenn man dessen Funktionalität nicht erweitern will :)
- setVisible(true) immer erst aufrufen wenn du alle Komponenten hinzugefügt hast :)

Gruß Robert
 

krgewb

Top Contributor
Ich habe für dich ein Beispiel-Programm gemacht. Vielleicht kannst du es für deine Zwecke ausschlachten. Das mit dem "extends JFrame" musst du halt noch ausbessern.

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

public class Hauptfenster extends JFrame {

    private static final long serialVersionUID = 1L;
    private JTextPane linkeTextPane = new JTextPane();

    public Hauptfenster() {

        this.setTitle("Uebung");

        JPanel obererBereich = new JPanel();

        this.setLayout(new BorderLayout());
        this.getContentPane().add(obererBereich, BorderLayout.NORTH);

        JPanel linkerBereich = new JPanel();
        this.getContentPane().add(linkerBereich, BorderLayout.WEST);
        linkeTextPane.setText("");
        linkeTextPane.setPreferredSize(new Dimension(200, 200));
        JScrollPane linkeScrollPane = new JScrollPane(linkeTextPane);
        linkerBereich.add(linkeScrollPane);
        linkeScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        linkeScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        this.setPreferredSize(new Dimension(800, 550));
        this.setResizable(false);

        this.pack();
        this.setVisible(true);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new Hauptfenster();
    }

}
 

Harry Kane

Top Contributor
Und anstatt das Panel dem Konstruktor zu übergeben benutz bitte #setViewportView(..)
Kannst du das begründen? Dein Tip klingt für mich "mache liebe zwei Zeilen statt einer".
Du musst aber anstatt panel dein scroll hinzufügen
Halb richtig.
@Soloeco: Was du machst: JTextArea in JPanel, JPanel in JFrame (soweit schonmal richtig, wenn auch ohne JScrollPane), und JPanel als View im JScrollPane (an der Stelle wird es dann falsch, denn wenn eine Component sowohl einen Container hinzugefügt wurde als auch als View in einer JScrollPane verwendet wurde, dürfte es beim rendern Chaos geben, vor allem weil du die JScrollPane keinem Container zuweist).
Diese Varianten sind richtig:
JTextArea in JScrollPane in JFrame (die einfachste Variante) oder
JTextArea in JPanel in JScrollPane in JFrame (falls neben der JTextArea noch weitere Komponenten in der JScrolLPane Platz finden sollen) oder
JTextArea in JScrollPane in JPanel in JFrame (falls neben der JScrollPane noch weitere Komponenten im JFrame PLatz finden sollen) oder
JTextArea in JPanel in JScrollPane in JPanel in JFrame (die komplizierteste Variante)
"XYZ in JScrollPane" heisst dabei NICHT, dass die Komponente XYZ per add der JScrollPasne hinzugefügt wird, sondern dass sie als View in der JScrollPane verwendet wird. Das Setzen der View aknn entweder im Konstruktor erfolgen oder per jscrollpane.setViewportView(aComponent);
 

lubi27X

Aktives Mitglied
Habe folgende Frage.
1619190483325.png

Ich habe diese GUI. Wie man sehen kann, ist das Feld rechts neben "Buchungen" ein JScrollPane. Nun möchte ich gerne, dass, wenn ich im DropDownMenü auf einen Punkt klicke (erstmal voll egal welchen), folgende Methode ausgeführt wird.
Java:
food.showCatPaymentList();
Diese Methode steht bei mir in der MainMethode und funktioniert einwandfrei und in der Konsole wird das ausgegeben, was die Methode ausgeben soll:
1619190717071.png

Doch nun soll die Ausgabe nicht auf der Konsole, sondern in der GUI in dem JScrollPane angezeigt werden.


Wie gehe ich das an? Ich brauche vorab bestimmt erstmal einen Listener, damit erkannt wird, was ich klicke.

Ich stelle mal eben noch den Code für das GUI Fenster rein:
Java:
import java.awt.FlowLayout;
import java.sql.Date;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;


public class PanelCategory extends JPanel{
    
    //Attribute
    private JLabel date;
    private JLabel catg = new JLabel();
    private JLabel paym = new JLabel();
    private JScrollPane scrPane;
    private JTextArea txt;
    
    private JComboBox <String> Boxcatg;
    private Timer dateTimer;
    private TimerTask timerTask;
//    int catgNo;
    
    
    
    PanelCategory() {
        this.setLayout(null);
        this.setOpaque(true);
        this.setBackground(FinanzGlueck_GUI.PANEL_BACKGR);
        
        //Methode ausführen
        addContent();
        
        this.add(date);
        this.add(catg);
        this.add(Boxcatg);
        this.add(scrPane);
        this.add(paym);
        this.setVisible(true);
    }
    
    public void addContent() {
        //Date
        date = new JLabel();
        date.setBounds(10, 80, 110, 20);
        date.setText("");
        date.setFont(FinanzGlueck_GUI.ARIAL_BOLD_20);
        //Date TimerTask & Timer
        timerTask = new TimerTask() {
            @Override
            public void run() {
                GregorianCalendar gCal = new GregorianCalendar();
                date.setText(gCal.get(Calendar.DATE) + "." + (gCal.get(Calendar.MONTH) + 1) + "."+ gCal.get(Calendar.YEAR));
            }
        };
        dateTimer = new Timer();
        dateTimer.schedule(timerTask,0,60000);
        
        //Categories
        catg.setText("Kategorie: ");
        catg.setBounds(10,30,150,25);
        catg.setBackground(FinanzGlueck_GUI.COMP_BACKGR);
        catg.setFont(FinanzGlueck_GUI.ARIAL_BOLD_20);
        
        //ComboBox
        String[] catArray = {"Nahrungsmittel", "Freizeit","Miete", "Gesundheit", "Bildung", "Auto", "Haus", "Versicherung", "Gehalt", "Geschenke","Sonstiges"};
        Boxcatg = new JComboBox<String>(catArray);
        Boxcatg.setBackground(FinanzGlueck_GUI.COMP_BACKGR);
        Boxcatg.setFont(FinanzGlueck_GUI.ARIAL_12);
        Boxcatg.setBounds(120, 30, 150, 20);
        
        //ScrollPane
        txt = new JTextArea();
        txt.add(new JLabel("HAJJHJHFVKJHVKJHK"));
//        JPanel panel = new JPanel();
//        txt.setBounds(80, 100, 150, 80);
//        panel.add(new JLabel("viel zu langer Textt"));
        
        scrPane = new JScrollPane(txt);
        scrPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
        scrPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrPane.setBounds(120, 120, 170, 100);
        
        //Payments
        paym.setText("Buchungen: ");
        paym.setBounds(5,120,150,25);
        paym.setBackground(FinanzGlueck_GUI.COMP_BACKGR);
        paym.setFont(FinanzGlueck_GUI.ARIAL_BOLD_20);
    }

}
 

Anhänge

  • 1619190449852.png
    1619190449852.png
    4 KB · Aufrufe: 12
Ähnliche Java Themen
  Titel Forum Antworten Datum
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
MaxG. Swing JScrollPane AWT, Swing, JavaFX & SWT 10
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
Bluedaishi JScrollpane AWT, Swing, JavaFX & SWT 0
L JScrollPane scrollt nicht !! AWT, Swing, JavaFX & SWT 3
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
F JTable mit JScrollPane AWT, Swing, JavaFX & SWT 4
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
B Swing JPanel in JScrollPane einfügen AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Transparentes JScrollPane AWT, Swing, JavaFX & SWT 0
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
K Bug in JScrollPane? AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
M JScrollPane Header AWT, Swing, JavaFX & SWT 3
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
V LayoutManager JScrollPane verwirft Elementanordnung AWT, Swing, JavaFX & SWT 3
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane AWT, Swing, JavaFX & SWT 7
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
C jPanel auf jScrollPane zentrieren AWT, Swing, JavaFX & SWT 3
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Swing Korrekte JTable.rowAt(point) für JTable in JScrollPane AWT, Swing, JavaFX & SWT 5
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
S JScrollPane reagiert nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane zu JTable hinzufügen AWT, Swing, JavaFX & SWT 16
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
P Swing JScrollpane AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
J JScrollPane Probleme AWT, Swing, JavaFX & SWT 3
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
D Swing JTable in JScrollpane beliebig verbreitern AWT, Swing, JavaFX & SWT 5
A Swing Anzeige Text in JScrollpane AWT, Swing, JavaFX & SWT 8
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
S Swing JScrollpane und ViewPort AWT, Swing, JavaFX & SWT 4
D JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 12
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
H jscrollpane AWT, Swing, JavaFX & SWT 12
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
B JScrollPane Problem AWT, Swing, JavaFX & SWT 25
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
G Swing Höhe des View eines JScrollPane fest auf Höhe des JScrollPane setzen! AWT, Swing, JavaFX & SWT 4
A JScrollPane AWT, Swing, JavaFX & SWT 16
C Swing JScrollPane und Scroll-Geschwindigkeit AWT, Swing, JavaFX & SWT 8
S JScrollpane mit JPanel und Probleme AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben