Swing Component.toString() was bedeutet flags

Gorac

Mitglied
hallo zusammen,

ich habe eine JComponent in Thread A und übergebe diese an Thread B also ungefähr:

[Java]JComponent c = new JComponent();
MyThread t = new MyThread(c);
[/code]

wenn ich nun die toString Methode für die Komponente aufrufe erhalte ich nicht immer zwei gleiche Ergebnisse. Alle mir angezeigten Werte stimmen überein, außer der Parameter "flags". Das Ergebnis von toString sieht wie folgt aus:

Java:
// Ergebnis in Thread A
ClassName[name,0,0,800x600,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

// Ergebnis in Thread B
ClassName[name,0,0,800x600,alignmentX=0.0,alignmentY=0.0,border=,flags=8203,maximumSize=,minimumSize=,preferredSize=]
[/Java]

nun meine frage ist, was bedeutet die angabe flags und warum unterscheidet sie sich obwohl es sich um die gleiche komponente handeln müsste.

vielen dank schon mal

gruß,
gorac
 
S

SlaterB

Gast
mögliche Flags z.B. in JComponent
Java:
    /** Private flags **/
    private static final int IS_DOUBLE_BUFFERED                       =  0;
    private static final int ANCESTOR_USING_BUFFER                    =  1;
    private static final int IS_PAINTING_TILE                         =  2;
    private static final int IS_OPAQUE                                =  3;
    private static final int KEY_EVENTS_ENABLED                       =  4;
    private static final int FOCUS_INPUTMAP_CREATED                   =  5;
    private static final int ANCESTOR_INPUTMAP_CREATED                =  6;
    private static final int WIF_INPUTMAP_CREATED                     =  7;
    private static final int ACTIONMAP_CREATED                        =  8;
    private static final int CREATED_DOUBLE_BUFFER                    =  9;
    // bit 10 is free
    private static final int IS_PRINTING                              = 11;
    private static final int IS_PRINTING_ALL                          = 12;
    private static final int IS_REPAINTING                            = 13;
    /** Bits 14-21 are used to handle nested writeObject calls. **/
    private static final int WRITE_OBJ_COUNTER_FIRST                  = 14;
    private static final int RESERVED_1                               = 15;
    private static final int RESERVED_2                               = 16;
    private static final int RESERVED_3                               = 17;
    private static final int RESERVED_4                               = 18;
    private static final int RESERVED_5                               = 19;
    private static final int RESERVED_6                               = 20;
    private static final int WRITE_OBJ_COUNTER_LAST                   = 21;
    
    private static final int REQUEST_FOCUS_DISABLED                   = 22;
    private static final int INHERITS_POPUP_MENU                      = 23;
    private static final int OPAQUE_SET                               = 24;
    private static final int AUTOSCROLLS_SET                          = 25;
    private static final int FOCUS_TRAVERSAL_KEYS_FORWARD_SET         = 26;
    private static final int FOCUS_TRAVERSAL_KEYS_BACKWARD_SET        = 27;
ziemlich undurchsichtig

-----

verschiedene toString() kann ich persönlich mir nicht vorstellen, entweder sind es verschiedene Objekte oder es liegt eine gewisse Zeit zwischen den Aufrufen, in denen die Flags geändert wurden,
etwa vor/ nach setVisible(true);
ohne Testprogramm ist das aber nur Raten
 

Gorac

Mitglied
vielen dank für die antwort. gibt es im internet eine (vollständige) liste der flags?
mich interessiert vorallem flag=9 (der ja bereits da steht) und flag=8203.

das es verschiedene objekte sind kann ich mir nicht vorstellen. ich hab zum beispiel den gleichen namen über getName() ermittelt. und wenn zwei objekte vorhanden währen müssten sie ja auch zwei mal zu sehen sein oder?
die möglichkeit, dass sich das jcomponent objekt zwischenzeitlich ändert kann durchaus zutreffen. ist schwer zu ermitteln, da es sich um ein größeres projekt handelt und ich nur eine erweiterung schreibe.

ist es möglich flags anzupassen?
 

Michael...

Top Contributor
Ziemlich sicher handelt es sich um die selbe Komponente, die flags repräsentieren ja nur den momentanen Zustand des Objekts.
Was hast Du denn eigentlich vor bzw. für was willst Du denn die toString() benutzen?
 

Murray

Top Contributor
Die Liste hat Slater gepostet; allerdings bezeichnen die Konstanten offensichtlich Bit-Nummern. Man muss den im toString ausgegebenen Dezimalwert also binär interpretieren:
9 dezimal ist 101 (also 1*2^0 + 0*2^1 + 2*2^2), also steht die 9 für die Kombination der Flags mit den Nummer 0 und 2: IS_DOUBLE_BUFFERED und IS_PAINTING_TILE

Die 8203 ist binär 10000000001011 also
1*2^0 + 1+2^1 + 1*2^4 + 1*2^13
0: IS_DOUBLE_BUFFERED
1: ANCESTOR_USING_BUFFER
4: KEY_EVENTS_ENABLED
13: IS_REPAINTING
 

Gorac

Mitglied
ich ermittele über getGraphics() das Graphics Objekt und zeiche ein Bild (in Thread A) bzw. einen Char (in Thread B) auf die JComponent. Dabei kommt es Teilweise vor, dass der Buchstabe nicht gezeichnet wird. Dann hab ich mir mit toString() einfach mal alles ausgeben lassen und festgestellt, dass der Buchstabe immer nicht gezeichnet wird, wenn die flags unterschiedlich sind.

Die 8203 ist binär 10000000001011 also
1*2^0 + 1+2^1 + 1*2^4 + 1*2^13
0: IS_DOUBLE_BUFFERED
1: ANCESTOR_USING_BUFFER
4: KEY_EVENTS_ENABLED
13: IS_REPAINTING

das mit dem IS_REPAINTING ist sehr interessant... das kann der grund sein, warum der buchstabe nicht gezeichnet wird.

gibt es eine möglichkeit die flags per hand zu setzen? wohl eher nicht oder? :/

edit: oder anders, kann ich irgendwie festlegen, dass sich die komponente nicht "selbst" repainten darf?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
das Setzen der Flags würde dir nicht helfen, stattdessen solltest du spätestens nun erkennen,
dass gleichzeitiges unkontrolliertes Malen schlecht ist, nie getGaphics() aufrufen

nur mit dem Graphics-Objekt aus überschriebener paintComponent() malen, durch repaint() herbeigeführt
 

Michael...

Top Contributor
Auf Komponenten sollte man niemals getGraphics() aufrufen, da man - wie Du bereits festgestellt hast - nie sicher sein kann, ob man tatsächlich den Grafikkontext bekommt.
API hat gesagt.:
public Graphics getGraphics()
Creates a graphics context for this component. This method will return null if this component is currently not displayable.
In Swing zeichnet man, in dem man die paintComponent(...) der Komponente überschreibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
C Swing Component bei Doppelklick löschen AWT, Swing, JavaFX & SWT 4
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
M Swing Component Resize AWT, Swing, JavaFX & SWT 7
L Eigene Component anordnen AWT, Swing, JavaFX & SWT 7
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
W Swing Component mehrfach adden AWT, Swing, JavaFX & SWT 0
H Drag component out of window AWT, Swing, JavaFX & SWT 1
A remove(Component) funktioniert nicht; JTable AWT, Swing, JavaFX & SWT 4
A Swing Focus auf gemalte Component AWT, Swing, JavaFX & SWT 5
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
M Kein resize nach Component.setVisible() AWT, Swing, JavaFX & SWT 2
Ebenius AWT Bug in Component.getLocationOnScreen() AWT, Swing, JavaFX & SWT 7
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
B JTable Component mit String? AWT, Swing, JavaFX & SWT 4
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
H Component Zerren AWT, Swing, JavaFX & SWT 5
S Swing Component vertikal und hochizontal zentrieren? AWT, Swing, JavaFX & SWT 5
Z Component für File-Browser ähnliche Oberfläche AWT, Swing, JavaFX & SWT 6
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
V Swing remove(Component) blockiert Thread sehr lange. AWT, Swing, JavaFX & SWT 6
C Problem mit remove(Component comp) AWT, Swing, JavaFX & SWT 23
F AWT Component in OpenGL anzeigen? AWT, Swing, JavaFX & SWT 18
A Java Konsolen Component AWT, Swing, JavaFX & SWT 6
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
DamienX Swing Component auf mehreren Containern AWT, Swing, JavaFX & SWT 2
algorismi AWT Tranparente heavyweight component AWT, Swing, JavaFX & SWT 2
R Swing Methode add([Component]) funzt nich AWT, Swing, JavaFX & SWT 7
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
U LayoutManager [GBL] Component aus einer Zelle löschen AWT, Swing, JavaFX & SWT 2
H Swing Illegal component position! AWT, Swing, JavaFX & SWT 2
C Flamingo Component AWT, Swing, JavaFX & SWT 2
M Doppelklick auf Component abfangen AWT, Swing, JavaFX & SWT 5
P DragAndDrop zw Component und Container AWT, Swing, JavaFX & SWT 4
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4
R Zugriff auf Component um addComponentListener() aufzurufen AWT, Swing, JavaFX & SWT 4
K AWT/SWING intern - Wie funktioniert die Component-Ermittlung AWT, Swing, JavaFX & SWT 13
S Line Component in SWING AWT, Swing, JavaFX & SWT 2
S java.awt.Component und paint() AWT, Swing, JavaFX & SWT 4
hdi Verständnisfrage: Container vs. Component AWT, Swing, JavaFX & SWT 3
D Eigene Component erstellen? AWT, Swing, JavaFX & SWT 4
C Syntax Highlighting Component AWT, Swing, JavaFX & SWT 2
O KeyBoardFocusManager - previous und next Component checken? AWT, Swing, JavaFX & SWT 2
A Eigene, sich selbst zeichnende Component AWT, Swing, JavaFX & SWT 5
A erneutes Öffnen jInternalFrame: illegal component position AWT, Swing, JavaFX & SWT 4
0 Component austauschen und aktualisieren ? AWT, Swing, JavaFX & SWT 6
S Thread beenden, wenn Component nicht mehr benötigt wird AWT, Swing, JavaFX & SWT 12
G "Rating Component" - Bewerten über JTable AWT, Swing, JavaFX & SWT 3
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2
F LayoutManager und Component.setVisible(boolean) AWT, Swing, JavaFX & SWT 2
P Component ändern (repaint) AWT, Swing, JavaFX & SWT 9
F Probleme bei add(Component) JPanel > JFrame AWT, Swing, JavaFX & SWT 3
B Component AWT, Swing, JavaFX & SWT 5
L Swing Component in Buffered Image AWT, Swing, JavaFX & SWT 6
G Component "finden" AWT, Swing, JavaFX & SWT 6
H Component fokussierbar machen AWT, Swing, JavaFX & SWT 2
P Wie das Component Object des Hauptfensters ermitteln? AWT, Swing, JavaFX & SWT 4
M GridBagLayout - Component Position AWT, Swing, JavaFX & SWT 4
R Component einer Form herausbekommen AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
B Component in JSplitPane aktualisieren AWT, Swing, JavaFX & SWT 2
G add(Component) in paintComponent erlaubt ? AWT, Swing, JavaFX & SWT 2
K Component einfügen in JPane AWT, Swing, JavaFX & SWT 5
M getSize von Component und ModelListener AWT, Swing, JavaFX & SWT 2
S Component auf Label zeichnen? AWT, Swing, JavaFX & SWT 3
R convertPointToScreen(Point p, Component c) AWT, Swing, JavaFX & SWT 5
R Component aus Container entfernen bzw. austauschen. AWT, Swing, JavaFX & SWT 6
C JPanel Component austauschen AWT, Swing, JavaFX & SWT 4
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
M Zeichenketten in GUIs (toString() vermeiden?) AWT, Swing, JavaFX & SWT 4
G toString -> TextArea AWT, Swing, JavaFX & SWT 2
Q sun.awt.X11.XException: Cannot write XdndAware property - Was bedeutet das? AWT, Swing, JavaFX & SWT 2
K SWT Style Bits API was bedeutet << AWT, Swing, JavaFX & SWT 38
V JComboBox gleicher Inhalt bedeutet gleicher Index? AWT, Swing, JavaFX & SWT 7
F Was bedeutet FontData AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben