lundi 8 juin 2015
UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht
Posted on 08:20 by verona
Hallo zusammen,
ich bastel an einen kleinem Chatsystem und tüftel nun schon länger an einem Problem, allerdings sind mir die Ideen ausgegangen an was es liegen kann.
Zum Code:
Meine Chatausgabe wird in einem JTextArea wiedergegeben. Ich habe ein Caret erstellt und die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt, damit bei jedem neuem Eintrag nach unten gescrollt wird. Dies ist allerdings nervig, wenn man einen Eintrag weiter oben lesen möchte.
Aus diesem Grund habe ich einen ScrollListener mit Abfrage erstellt, diese prüft ob nach unten gescrollt wurde. Wenn dies der Fall ist, wird die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt. Wenn nicht nach unten gescrollt wurde, dann wird die UpdatePolicy auf "NEVER_UPDATE" gesetzt. In meiner Kontrollausgabe, wird dieser Vorgang auch bestätigt.
ScrollListener mit setzen von UpdatePolicy und Kontrollausgabe. (Ich missbrauche in dem Fall die ClientList als Testausgabe.)
Die Funktionen:
Das Problem:
Die 4. Funktion funtioniert nicht, obwohl die Testausgaben meinen Erwartungen entsprechen und zeigen, dass die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt wurde.
Ich hoffe, dass dies einigermaßen versändlich ist und ihr eine Idee für das Problem habt.
Grüße
Henne
ich bastel an einen kleinem Chatsystem und tüftel nun schon länger an einem Problem, allerdings sind mir die Ideen ausgegangen an was es liegen kann.
Zum Code:
Meine Chatausgabe wird in einem JTextArea wiedergegeben. Ich habe ein Caret erstellt und die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt, damit bei jedem neuem Eintrag nach unten gescrollt wird. Dies ist allerdings nervig, wenn man einen Eintrag weiter oben lesen möchte.
Aus diesem Grund habe ich einen ScrollListener mit Abfrage erstellt, diese prüft ob nach unten gescrollt wurde. Wenn dies der Fall ist, wird die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt. Wenn nicht nach unten gescrollt wurde, dann wird die UpdatePolicy auf "NEVER_UPDATE" gesetzt. In meiner Kontrollausgabe, wird dieser Vorgang auch bestätigt.
ScrollListener mit setzen von UpdatePolicy und Kontrollausgabe. (Ich missbrauche in dem Fall die ClientList als Testausgabe.)
Java Code:
-
package Chat.GUI;
-
-
import java.awt.event.AdjustmentEvent;
-
import java.awt.event.AdjustmentListener;
-
import javax.swing.text.DefaultCaret;
-
-
import Chat.Main.Main;
-
-
{
-
@Override
-
{
-
Main.GUI.setClientList(Main.GUI.getScrollOutput().getViewRect().getY()+"");
-
Main.GUI.addClientList(Main.GUI.getScrollOutput().getViewRect().getSize().getHeight()+"");
-
Main.GUI.addClientList(Main.GUI.getScrollOutput().getView().getSize().getHeight()+"");
-
-
if(Main.GUI.getScrollOutput().getViewRect().getY()+Main.GUI.getScrollOutput().getViewRect().getSize().getHeight() == Main.GUI.getScrollOutput().getView().getSize().getHeight())
-
{
-
Main.GUI.addClientList("y");
-
Main.GUI.addClientList(Main.GUI.caretO.getUpdatePolicy());
-
}
-
else
-
{
-
Main.GUI.addClientList("n");
-
Main.GUI.addClientList(Main.GUI.caretO.getUpdatePolicy());
-
}
-
}
-
}
Die Funktionen:
- Wenn die Einträge den Anzeigebereich überschreiten wird der Scrollbalken angezeigt und bei jedem neuem Eintrag automatisch nach unten gescrollt.
- Wenn ich nach oben scrolle und wieder nach ganz unten scrolle und dann ein neuer Eintrag erstellt wird, wird automatisch nach unten gescrollt.
- Wenn ich nicht ganz nach unten gescrollt habe und ein neuer Eintrag wird erstellt, dann bleibt der Scrollbalken stehen.
- Wenn ich nicht nach unten gescrollt habe und ein neuer Eintrag erstellt wird und ich danach nach ganz unten scrolle und dann wieder ein Eintrag erstellt wird, dann soll automatisch nach unten gescrollt werden.
Das Problem:
Die 4. Funktion funtioniert nicht, obwohl die Testausgaben meinen Erwartungen entsprechen und zeigen, dass die UpdatePolicy auf "ALWAYS_UPDATE" gesetzt wurde.
Ich hoffe, dass dies einigermaßen versändlich ist und ihr eine Idee für das Problem habt.
Grüße
Henne
UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire