JScrollPane repaint(); geht nicht

nathic

Mitglied
Guten Tag,

Ich habe ein Problem, nämlich versuche ich ein Chat Programm zu schreiben und habe dazu ein GUI mit klassischer Chat-Fenster Struktur als Anzeigefeld benutze ich eine JTextArea welche ich in ein JScrollPane packe damit ich wenn das Anzeigefeld vollgeschrieben ist einfach scrollen kann.
Nun möchte ich mit dem Button "Send" die Nachricht welche im Eingabefeld steht ins Anzeigefeld pasten. Dies mache ich mit textArea.append("test");
Um die Änderung im GUI zu aktualisieren führe ich den Befehl JScrollPane.repaint(); auf jedoch funktioniert das überhaupt nicht. ;(
Was muss ich tun?

Hier mein Code

Java:
public class GUI {

    // create JFrame
    JFrame jFrame = new JFrame("Chat");

    // create JPanels and JScrollPane
    JPanel pnl_menu = new JPanel();
    JPanel pnl_text_area = new JPanel();
    JPanel pnl_input_and_send = new JPanel();
    JScrollPane scrollPane = new JScrollPane();

    // create JButton
    JButton sendButton = new JButton("Send");

    // create JTextField and JTextArea
    final JTextField inputText = new JTextField(20);
    final JTextArea textArea = new JTextArea("", 15, 25);

    // create Menu Elements
    JMenuBar mb = new JMenuBar();
    JMenu mnuFile = new JMenu("File");
    JMenuItem mnuItemQuit = new JMenuItem("Quit");

    public void init() {
        // setFont
        jFrame.setFont(new Font("Helvetica", Font.PLAIN, 12));

        configureTextArea();

        configureScrollPane();

        pnl_text_area.setPreferredSize(new Dimension(200, 400));

        addToJPanel(pnl_text_area, pnl_input_and_send);
        addToJFrame(pnl_menu, pnl_text_area, pnl_input_and_send);

        // Menu
        jFrame.setJMenuBar(mb);
        mnuFile.add(mnuItemQuit);
        mb.add(mnuFile);
        mnuItemQuit.addActionListener(new ListenMenuQuit());

        // JFrame settings
        jFrame.setResizable(false);
        jFrame.addWindowListener(new ListenCloseWdw());

        sendButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (inputText.getText() != null && inputText.getText() != " ") {
                    textArea.append(inputText.getText() + "\n");
                    scrollPane.repaint();
                }
            }
        });
    }

    private void configureScrollPane() {
        scrollPane.add(textArea);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setWheelScrollingEnabled(true);
        scrollPane.setPreferredSize(new Dimension(300, 390));
    }

    private void configureTextArea() {
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
    }

    private void addToJPanel(JPanel pnl_text_area, JPanel pnl_input_and_send) {
        pnl_input_and_send.add(inputText);
        pnl_text_area.add(scrollPane);
        pnl_input_and_send.add(sendButton);
    }

    private void addToJFrame(JPanel pnl_menu, JPanel pnl_text_area, JPanel pnl_input_and_send) {
        jFrame.getContentPane().setLayout(new BorderLayout());
        jFrame.getContentPane().add(pnl_menu, BorderLayout.NORTH);
        jFrame.getContentPane().add(pnl_text_area, BorderLayout.CENTER);
        jFrame.getContentPane().add(pnl_input_and_send, BorderLayout.SOUTH);
    }

    public class ListenMenuQuit implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }

    public class ListenCloseWdw extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }

    public void launchFrame() {
        // Display Frame
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.pack(); // Adjusts panel to components for display
        jFrame.setVisible(true);
    }

    public static void main(String args[]) {
        GUI gui = new GUI();
        gui.init();
        gui.launchFrame();
    }
}
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
a) das repaint ist nicht notwendig
b)
Code:
if (inputText.getText() != null && inputText.getText() != " ") {
Objekte mit equals vergleichen
c (dein eigentliches Problem) ) scrollPane.add(textArea); --> scrollPane.setViewportView(textArea);
 

cronkalonca

Mitglied
Mahlzeit.

Ich würde mein Problem gerne hier mit dranhängen, da es wohl ähnliche Merkmale hat.

Ich zeichne in einem Applet eine Tile-Map.
Am unteren linken Bildschirmrand habe ich ein JPanel, indem sich eine JTextArea mit einem JScrollPane befindet.

Wenn ich nun Text in die TextArea einfügen möchte, dann wird der Hintergrund der TextArea mit Teilen der TileMap gefüllt. Dadurch entstehen seltsame Bilder im Hintergrund des Chats.

Hier die wichtigen Codeschnipsel:

Java:
chat_panel = new JPanel();
chat = new JTextArea(6, 30);
scroll = new JScrollPane();
scroll.setViewportView(chat);

chat_panel.add(scroll);
content.add(chat_panel);

Bei Tastendruck(zu Testzwecken) wird folgendes gemacht:

Java:
chat.append("chat.append("Du hast den blauen Kristall gefunden! \nEr befindet sich nun in Deiner Tasche! \nDu kannst die Tasche mit 'b' öffnen \nbla")");
chat.setCaretPosition(chat.getText().length());
chat.repaint();

Die JPanel, JScrollPane und JTextArea werden noch optisch bearbeitet mit setBackground etc. Denke aber das tut nichts zur Sache.

hier noch einmal ein Bild wie der chat zu Beginn aussieht:
chat1.JPG


nach mehreren 'appends' siehts so aus:
chat2.JPG


Hoffe Ihr habt eine Idee wodran es liegen kann.

Danke schonmal.
 
S

SlaterB

Gast
ist TileMap ein so klarer Fachbegriff wie JScrollPane?
irgendwas mit deinen Zeichenbefehlen scheint nicht in Ordnung, wie machst du das denn, ähnlich einfach wie hier
Java tile maps - GameDev.Net Discussion Forums
oder wie genau?

---

klingt nach einem relativ komplizierten speziellen Problem,
hier in diesem Thema werden 90% aller Passanten nicht reinschauen, lieber ein neues..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
M JScrollPane scrollt nicht Java Basics - Anfänger-Themen 2
D JScrollPane mit TextArea Java Basics - Anfänger-Themen 5
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
T JScrollPane in den Code einbauen Java Basics - Anfänger-Themen 5
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
A JScrollPane nicht sichtbar Java Basics - Anfänger-Themen 5
S JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 6
N jScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 13
L Jscrollpane nach zoomen anpassen Java Basics - Anfänger-Themen 20
C JScrollPane + JTextArea scrollt nicht Java Basics - Anfänger-Themen 2
T JScrollPane nicht scrollbar (mit KSKB!) Java Basics - Anfänger-Themen 4
T JScrollPane: Slider programmgesteuert verschieben? Java Basics - Anfänger-Themen 4
Kenan89 JScrollPane, aber kein Scrollbalken Java Basics - Anfänger-Themen 4
T JScrollPane funktioniert nicht Java Basics - Anfänger-Themen 7
D jScrollPane Problem Java Basics - Anfänger-Themen 16
JStickman JTree, JScrollPane, Liste mit graphischer Suchleiste - Dateimanager Java Basics - Anfänger-Themen 10
A Button das JScrollPane aktualisiert Java Basics - Anfänger-Themen 11
S JScrollPane verhält sich nicht so wie gedacht Java Basics - Anfänger-Themen 2
T JScrollPane ganz runter Scrollen Java Basics - Anfänger-Themen 4
T JScrollPane resized nicht richtig... Java Basics - Anfänger-Themen 4
Z Label verschwindet in JScrollPane Java Basics - Anfänger-Themen 7
R JScrollPane in JTextArea benutzen Java Basics - Anfänger-Themen 10
L JPanel vergrößern bis JScrollPane nicht mehr zu sehen Java Basics - Anfänger-Themen 7
O JScrollPane , JScrollBar Java Basics - Anfänger-Themen 3
Z JScrollPane zeigt Zeit als Datum Java Basics - Anfänger-Themen 5
E Breite des Schiebers in JscrollPane verändern Java Basics - Anfänger-Themen 2
T JScrollPane soll rechts gescrollt gezeichnet werden Java Basics - Anfänger-Themen 5
P JScrollPane Java Basics - Anfänger-Themen 18
J JScrollPane, Regler-Problem Java Basics - Anfänger-Themen 3
J JScrollPane swing Java Basics - Anfänger-Themen 8
H JTable in JScrollPane: Scrollbar wird nicht angezeigt. Java Basics - Anfänger-Themen 2
H2SO3- JScrollPane will nicht scrollen Java Basics - Anfänger-Themen 3
_deleted Mehrere Panels untereinander im JScrollPane Java Basics - Anfänger-Themen 4
J JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 4
A JScrollPane aktualisiert nicht Java Basics - Anfänger-Themen 2
7 Java Swing: Wie JScrollPane zur JList hinzufügen? Java Basics - Anfänger-Themen 12
C jTabbedPane JScrollPane und jPanel Java Basics - Anfänger-Themen 3
S JScrollPane und JPanel Java Basics - Anfänger-Themen 2
J JScrollBar JScrollPane Java Basics - Anfänger-Themen 9
Q Anwendung eines JScrollPane Java Basics - Anfänger-Themen 2
M JScrollPane Java Basics - Anfänger-Themen 7
M Probleme mit JScrollPane Java Basics - Anfänger-Themen 5
G JScrollPane Java Basics - Anfänger-Themen 5
S JScrollPane: Scrollbalken werden nicht angezeigt Java Basics - Anfänger-Themen 4
P Brauche Hilfe für JPanel im JScrollPane und Abstände Java Basics - Anfänger-Themen 2
M VisualEditor, Jlist und JScrollPane Java Basics - Anfänger-Themen 9
M JScrollPane soll inhalt zentrieren Java Basics - Anfänger-Themen 3
C Automatischer Umbruch bei JScrollPane? Java Basics - Anfänger-Themen 5
G JScrollPane + JTable + Autoscroll uvm. Java Basics - Anfänger-Themen 5
N JScrollPane mit JTextArea Java Basics - Anfänger-Themen 4
I Autoscrolling im JScrollPane Java Basics - Anfänger-Themen 3
H JScrollPane -> Problem bei ScrollBar Java Basics - Anfänger-Themen 3
lin JScrollPane & OutOfMemoryError Java Basics - Anfänger-Themen 6
G JScrollPane in der Größe bestimmen Java Basics - Anfänger-Themen 11
R JScrollpane problem Java Basics - Anfänger-Themen 21
P JScrollPane an JTextArea anhängen Java Basics - Anfänger-Themen 3
C JScrollPane ohne Rahmen? Java Basics - Anfänger-Themen 2
M JScrollPane Java Basics - Anfänger-Themen 4
G Probleme mit JScrollPane Java Basics - Anfänger-Themen 3
M JScrollPane: Autoscroll Java Basics - Anfänger-Themen 14
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
S Repaint() Java Basics - Anfänger-Themen 1
J Erste Schritte Mit repaint() ist Label nicht sichtbar Java Basics - Anfänger-Themen 15
S Repaint() in der Schleife funktioniert nicht immer Java Basics - Anfänger-Themen 5
H Graphics / repaint Java Basics - Anfänger-Themen 8
D Verhindern das repaint beim vergrößern aufgerufen wird Java Basics - Anfänger-Themen 9
M Liste mit repaint aktualisieren Java Basics - Anfänger-Themen 1
E Probleme mit repaint() Java Basics - Anfänger-Themen 15
K Erkennt repaint nicht Java Basics - Anfänger-Themen 1
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
A externer repaint Aufruf Java Basics - Anfänger-Themen 9
G Problem mit repaint() Java Basics - Anfänger-Themen 2
J repaint() geht gar nicht; GUI aktualisieren Java Basics - Anfänger-Themen 10
J paint() vs repaint() Java Basics - Anfänger-Themen 3
C repaint wird nicht während Druck auf Maustaste ausgeführt. Java Basics - Anfänger-Themen 4
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
P [JTable] Problem mit repaint() Java Basics - Anfänger-Themen 2
P Interpreter-Fehler Im for loop funkzioniert repaint nicht :( Java Basics - Anfänger-Themen 4
M repaint() in run-Methode funktioniert nicht Java Basics - Anfänger-Themen 9
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
W repaint() ruft paint() nicht auf Java Basics - Anfänger-Themen 9
J repaint() funktioniert nicht wie gewünscht Java Basics - Anfänger-Themen 30
I Hangman CardLayout/repaint? Java Basics - Anfänger-Themen 2
H Variablen Probleme mit repaint() Java Basics - Anfänger-Themen 2
Y im applet malen ohne repaint paint ? Java Basics - Anfänger-Themen 6
J repaint(); launisch ? Java Basics - Anfänger-Themen 3
E Altes Bild bei repaint() löschen? Java Basics - Anfänger-Themen 10
Z Wie repaint() bei Uhr realisieren? Java Basics - Anfänger-Themen 12
I repaint bei jpanel Java Basics - Anfänger-Themen 10
T repaint wir nicht mehr geöffnet! Java Basics - Anfänger-Themen 38
T Canvas aktualisierung mit repaint Java Basics - Anfänger-Themen 5
C GUI aktualisieren: repaint, validate, Fenstergröße ändern bringt nichts Java Basics - Anfänger-Themen 13
Antoras Swing repaint und Nullpointer Java Basics - Anfänger-Themen 6
O repaint() wird nicht ausgeführt Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben