JLayeredPane moveToFront funktioniert nicht

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

so sieht im Grunde mein Code aus:
Code:
private JLayeredPane tabbedPane;
this.tabbedPane = new JLayeredPane();
this.tabbedPane.setLayout(new BorderLayout());
this.tabbedPane.add(this.A1,this.NO_SELECTION);
this.tabbedPane.add(this.B1, this.SELECTION);
...
tabbedPane.moveToFront(this.A1);
...

Nun mein Problem. Bevor ich mein Java von 1.4 auf 1.6 umgestellt habe hat obiges einwandfrei funktioniert.
Jetzt allerdings mit Java 1.6 bekomme ich zwar keine Fehlermeldung angezeigt ABER der Befehl moveToFront funktioniert nicht. Angezeigt wird nur der zuletzt dem tabbedPane hinzugefügte Component. In diesem Fall B1. Der Befehl tabbedPane.moveToFront(this.A1); bewirkt nichts

Hat jemand eine Ahnung woran dies liegen könnte?

MFG
 

André Uhres

Top Contributor
VoLvic hat gesagt.:
so sieht im Grunde mein Code aus:
Code:
private JLayeredPane tabbedPane;
this.tabbedPane = new JLayeredPane();
this.tabbedPane.setLayout(new BorderLayout());
this.tabbedPane.add(this.A1,this.NO_SELECTION);
this.tabbedPane.add(this.B1, this.SELECTION);
...
tabbedPane.moveToFront(this.A1);
...
Hi VoLvic,
erstmal herzlich willkommen in als neu registrierter Benutzer!

Um dein Problem verstehen zu können, wäre ich dir dankbar, wenn du uns noch folgende Fragen beantworten könntest:

Was willst du mit setLayout( new BorderLayout() ) erreichen?
Um welche Komponenten handelt es sich (A1, B1)?
Was stellen SELECTION und NO_SELECTION dar?

Könntest du uns bitte diese Fragen beantworten?
 

VoLvic

Mitglied
Code:
private JLayeredPane tabbedPane;
this.tabbedPane = new JLayeredPane();
this.tabbedPane.setLayout(new BorderLayout());
this.tabbedPane.add(this.A1,this.NO_SELECTION);
this.tabbedPane.add(this.B1, this.SELECTION);
...
tabbedPane.moveToFront(this.A1);
...

also new BorderLayout legt in einer anderen Funktion Größe, Farbe, etc fest.
A1, B1 ist sozusagen ein Label das dem LayeredPane hinzugefügt wird
Hinter NO_SELECTION, ... verbirgt sich ein Zahlenwert in dem Fall 20.


... ich habe mir jetzt schon länger darüber den Kopf zerbrochen, kann mir aber beim besten Willen nicht erklären weshalb dies unter Java 6 nicht funktioniert. In der Regel sind die JavaVersionen doch abwärtskompatibel?


MFG
 

André Uhres

Top Contributor
>also new BorderLayout legt in einer anderen Funktion Größe, Farbe, etc fest.

Das versteh ich nicht ganz, denn ein LayoutManager ist ja nicht für die Farbe zuständig.
In einem JLayeredPane ist standardmäßig kein Layoutmanager eingestellt.
Daher müssen alle integrierten Komponenten feste Positionsangaben und Größen haben.
Dazu kann man beispielsweise die Methode setBounds(int x, int y, int width, int height) benutzen.
Wenn man einem JLayeredPane einen Layoutmanager zuordnet,
so werden alle Komponenten gemäß den Richtlinien so angeordnet, als wären sie alle in einer Ebene.
Siehe auch: How to Use Layered Panes. Dort findest du auch den Abschnitt "Laying Out Components in a Layered Pane".

>Hinter NO_SELECTION, ... verbirgt sich ein Zahlenwert in dem Fall 20.

Das versteh ich noch weniger. Hier erwartet das BorderLayout eine Constraint, die es kennt, z.B. BorderLayout.NORTH.
 

VoLvic

Mitglied
oh sorry mit dem LayoutManager hab ich mich vertan. Natürlich ist er nicht für die Farbe zuständig sondern so wie du es beschrieben hast.

>Hinter NO_SELECTION, ... verbirgt sich ein Zahlenwert in dem Fall 20.

Das versteh ich noch weniger. Hier erwartet das BorderLayout eine Constraint, die es kennt, z.B. BorderLayout.NORTH.

Ich sollte mich wohl besser ausdrücken...
Folgendes
Code:
this.tabbedPane.add(this.A1,this.NO_SELECTION);
könnte man ja auch so schreiben:
Code:
this.tabbedPane.add(this.A1,new Integer(20));
das hatte ich mit dem Zahlenwert gemeint. Also es wird schon ein Constraint übergeben.
 

byte

Top Contributor
Verwirrst Du eigentlich gerne Kollegen (und Forenuser) oder warum heisst Deine JLayeredPane tabbedPane? Du weisst schon, dass es auch eine JTabbedPane gibt?
 

VoLvic

Mitglied
so ist die ursrpüngliche Bezeichnung des JLayeredPane in dem Projekt an dem ich arbeite. Das hat mein Vorgänger wohl so genannt :)

Aber daran liegt es ja sicher nicht das es von Java 4 auf 6 auf einmal nicht mehr funktioniert
 

André Uhres

Top Contributor
>Also es wird schon ein Constraint übergeben.

Ja, aber BorderLayout erwartet einen String.
Du musst uns schon ein wenig helfen, daß wir deinen Code auch verstehen können,
sonst können wir dir ja auch nicht weiterhelfen. Wenn ein unübersichtlicher Code mit
einer bestimmten Java Version funktioniert, dann kann das auch reiner Zufall sein.
Am besten wäre es natürlich, wenn du ein kurzes, selbständiges, kompilierbares Beispiel machen könntest.
Dann kommen wir am schnellsten zur Lösung.
 

VoLvic

Mitglied
so ich habe mal versucht meinen Fehler 'grob' zu rekonstruieren

Code:
import java.awt.BorderLayout;
import javax.swing.*; 

public class LPaneExp {

    private static JLayeredPane layPane;
    public static final int A1 = -1;
    public static final int A2 = 1;
    public static final int A3 = 2;
    public static final int A4 = 0;

      public static void main( String[] args ) 
      { 
	JTable table;
	JTable table2;
	JTable table3;
	JLabel label1;
	JCheckBox onTop;
	    
        String[][] rowData1 = { 
            { "Japan", "245" }, { "USA", "240" }, { "Italien", "220" },
        }; 
        String[][] rowData2 = { 
                { "Spanien", "217" }, {"Türkei", "215"} ,{ "England", "214" }, 
            }; 
        String[][] rowData3 = { 
                { "Frankreich", "190" }, {"Griechenland", "185" },{ "Deutschland", "180" },
            }; 
        String[] columnNames =  { 
            "Land", "Durchschnittliche Fernsehdauer pro Tag in Minuten" 
        }; 
     
        JFrame f = new JFrame(); 
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
     
        table = new JTable( rowData1, columnNames ); 
        table2 = new JTable( rowData2, columnNames ); 
        table3 = new JTable( rowData3, columnNames ); 
        
        layPane = new JLayeredPane();
        
        layPane.setLayout(new BorderLayout());
        
        layPane.add(table, A1);
        layPane.add(table2, A4);
        layPane.add(table3, A3);
        
        layPane.moveToFront(table2);
        
        f.add( layPane); 
     
        f.pack(); 
        f.setVisible( true ); 
      } 
}

- ich lege hier 3 JTables an in denen irgendwas drin steht.
- das BorderLayout wird erstellt (Constructs a new border layout with no gaps between components.)
- ich erstelle einen neuen JLayeredPane und füge die 'tables' hinzu.

Wenn ich jetzt allerdings den table2 als erstes angezeigt bekommen will geschieht durch den Befehl
Code:
layPane.moveToFront(table2)
nichts bzw wird immernoch der zuletzt hinzugefügte Eintrag gezeigt.


So in etwa äußert sich auch der 'Fehler' in meinem eigentlichen Programm.


MFG
 

VoLvic

Mitglied
also ich denke mal das es am BorderLayout() liegt.
Wenn ich
Code:
table.setBounds(0,0,300, 310);
table2.setBounds(0,0,300, 310);
setzte funktioniert es.

Allerdings kann ich mir immernoch nicht erklären weshalb es bei Java 4 funktioniert hat.???
 

André Uhres

Top Contributor
VoLvic hat gesagt.:
also ich denke mal das es am BorderLayout() liegt.
Es könnte auch sein, daß layPane.moveToFront(table2); nix macht, weil table2 mit Index 0 ja eigentlich schon
vorne ist. Aber das BoderLayout spielt sicher auch mit, weil du alles in den CENTER tust und dort kann
eigentlich nur eine einzige Komponente sein (er nimmt dann die letzte, die hinzugefügt wurde).
Das Beispiel funktioniert auch nicht mit Java 4.
Aber dies funktioniert bei mir:
Code:
layPane.moveToFront(table);
("table" hat Index 1 und bekommt jetzt Index 0)
 

VoLvic

Mitglied
hmm bei mir hat es nicht funktioniert!!

aber ... aus irgendeinem Grund funktioniert es bei mir unter Java 4 doch nicht unter Java 6. Weshalb auch immer.

Der Sinn hinter dem ganzen war, dass man sozusagen durch die verschiedenen Tabellen hindurchswitchen kann.
Ich habe mich jetzt aber dafür entschieden, es mit einem andern layoutManger- CardLayout zu versuchen. Dies hat auch geklappt:)


... danke für die Tips

MFG
 

André Uhres

Top Contributor
VoLvic hat gesagt.:
hmm bei mir hat es nicht funktioniert!!
aber ... aus irgendeinem Grund funktioniert es bei mir unter Java 4 doch nicht unter Java 6. Weshalb auch immer.
Ja, du hast recht. Das hier:
Code:
layPane.moveToFront(table);
funktioniert mit Java 4, aber nicht mit Java 6.
Es ist wohl ein Zusammenspiel von den Indexmanipulationen und dem BorderLayout,
das in den verschiedenen Versionen anders implementiert ist.
Es ist wohl mehr Zufall, dass es mit Java 4 funktioniert,
denn für dein Vorhaben ist es in der Tat eine unglückliche Konstruktion. Das BorderLayout passt da nicht rein,
weil es nicht dafür gebaut ist, Komponenten voreinander zu setzen, sondern nebeneinander.
Mit dem CardLayout bist du für deinen Zweck weit besser bedient.
 

André Uhres

Top Contributor
VoLvic hat gesagt.:
Kann ich den Thread schließen obwohl ich ihn als Gast eröffnet habe?
Ich glaube nicht.
Du kannst ihn nur schliesen, wenn du diesen kleinen Button mit dem Häkchen siehst:

abhaken.jpg


Da musst du dann drauf klicken :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B viele JPanels auf JLayeredPane -> to SVG? AWT, Swing, JavaFX & SWT 15
S Swing JLayeredPane Anordnung funktioniert nicht AWT, Swing, JavaFX & SWT 2
S Swing JLayeredPane "Phänomen"? AWT, Swing, JavaFX & SWT 7
E Swing JPanel in JLayeredPane animieren AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
T JLayeredPane in JScrollBox AWT, Swing, JavaFX & SWT 2
GUI-Programmer Swing Problem mit JLayeredPane AWT, Swing, JavaFX & SWT 2
M JLayeredPane mit JPanel im Vordergrund, Hintergrundelemente sperren AWT, Swing, JavaFX & SWT 7
G JPanel in JLayeredPane AWT, Swing, JavaFX & SWT 8
D Probleme mit MouseWheelListener und JLayeredPane in Applet AWT, Swing, JavaFX & SWT 2
G Swing JLayeredPane Schach AWT, Swing, JavaFX & SWT 7
K JLayeredPane Elemente auf gleicher Position AWT, Swing, JavaFX & SWT 7
R JLayeredPane - JPanel mit variabler Form AWT, Swing, JavaFX & SWT 4
J Layer von JLayeredPane unsichtbar durchsichtig in den Hintergrund AWT, Swing, JavaFX & SWT 5
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
J SWING Fenster mit mehreren JPanels (dank JLayeredPane) AWT, Swing, JavaFX & SWT 19
R Swing JLayeredPane - Wie JScrollPane einbauen? AWT, Swing, JavaFX & SWT 17
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
H Button auf Bild/ JLayeredPane in Jpanel AWT, Swing, JavaFX & SWT 15
D jLayeredPane Ebenen mit dynamischer Größe AWT, Swing, JavaFX & SWT 2
B Ärger mit JLayeredPane :-( AWT, Swing, JavaFX & SWT 5
S JLayeredPane AWT, Swing, JavaFX & SWT 16
M JLayeredPane : Applet - Application AWT, Swing, JavaFX & SWT 4
V JLayeredPane wird nur 1x bezeichnet AWT, Swing, JavaFX & SWT 12
shiny_hair JLayeredPane - Wie funktioniert das mit den Layern? AWT, Swing, JavaFX & SWT 2
T JLayeredPane Problem - AWT und SWING Komponente AWT, Swing, JavaFX & SWT 6
M Scrollbare JLayeredPane AWT, Swing, JavaFX & SWT 2
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
H Bewegung funktioniert nicht AWT, Swing, JavaFX & SWT 3
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
S JavaFX wie funktioniert CSS und javaFX AWT, Swing, JavaFX & SWT 19
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
M JavaFX Eventhandler Funktioniert nicht AWT, Swing, JavaFX & SWT 3
Sogomn JavaFX Injektion funktioniert nicht AWT, Swing, JavaFX & SWT 4
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
J JavaFX Button funktioniert(nicht) AWT, Swing, JavaFX & SWT 3
J DefaultCloseOperation funktioniert nicht AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben