2009-05-05 6 views
2

Ich erstelle eine Benutzeroberfläche mit XUL. Ich habe N-Tasten, die ich hinzufügen möchte, und alles, was mir wichtig ist, ist, dass sie alle auf dem Formular angezeigt werden, unabhängig von der Größe des Formulars. Wenn ich später eine neue Schaltfläche hinzufüge oder eine vorhandene Schaltfläche lösche, möchte ich einfach das Element <button> löschen, anstatt Elemente innerhalb von raster- oder hbox/vbox-Elementen verschieben zu müssen.Wie erreiche ich das Flusslayout in XUL?

Gibt es eine Möglichkeit, dieses Verhalten zu erhalten? Es scheint merkwürdig, dass ich das nicht erreichen kann, da es das Standard Verhalten in HTML ist.

+0

Vielleicht haben Sie Ihre Frage umformulieren könnte. In welchem ​​Sinne müssen Sie "Dinge im Inneren bewegen", wenn Sie einen Knopf entfernen? – pc1oad1etter

+1

Ich denke, er meint, dass er will, dass Tasten auf der nächsten "Zeile" weitermachen, wenn sie zu viel Platz belegen und statt z. Eine Reihe von Schaltflächen wird zu 2 Zeilen. Dies ist wahrscheinlich, was er meint: http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html – lithorus

+0

Lithorus ist korrekt. Ohne die Möglichkeit, die Dinge automatisch in eine zweite Zeile fließen zu lassen, muss ich die Elemente zwischen den Gitter- oder {h, v} -Boxcontainern neu ausbalancieren, damit sie optisch sichtbar erscheinen. Um zu versuchen, ein visuelles Konzept in Worten zu erklären: sagen wir, ich habe 6 Knöpfe, die ich auf dem Formular platzieren möchte, und mein Formular ist 3 Tasten breit. Wie sollte ich diese Schaltflächen platzieren, sodass das Hinzufügen/Entfernen von Schaltflächen am wenigsten Arbeit erfordert? Beachten Sie auch, dass das Formular in der Größe geändert werden kann. – Nathan

Antwort

0

HTML und XUL gehen auf einer fundamentalen Ebene anders damit um. XUL ist Box-basiert. Sie können den besprochenen Unterschied sehen on MDC here. Es ist nicht ganz klar (mir) aus der Dokumentation, aber nsBoxToBlockAdaptor könnte ein Schritt in die Richtung sein, die Sie suchen.

+1

nsBoxToBlockAdaptor ist eine interne Klasse in Gecko-Implementierung, und es existiert nicht einmal in diesen Tagen. – Nickolay

2

Versuchen Sie folgendes:

<description><button/><button/><button/><button/><button/> 
       <button/><button/><button/><button/></description> 

XUL <description> on MDC

PS. Sie möchten wahrscheinlich Ihre Benutzeroberfläche überdenken, wenn Sie eine große und nicht konstante Anzahl von Tasten in einer Reihe haben :)

+0

Danke für den Vorschlag; Ich werde es versuchen und Sie wissen lassen, wie es funktioniert. Die Anzahl der UI-Elemente in jeder Zeile ist konstant, aber wenn ich eine neue hinzufügen möchte, ist es ein Schmerz in meinem Arsch, und es macht die Größe der Form unbeholfen. – Nathan

+0

Scheint nicht in einem Tabpanel-Element zu funktionieren. Der Inhalt der Registerkarte wird nicht angezeigt. – Nathan

+0

@Nathan: anstatt nur zu sagen "es funktioniert nicht" hätten Sie den Testfall zur Verfügung stellen können, um zu demonstrieren, was genau Sie ausprobiert haben. Das würde die Chancen erhöhen, dass jemand das Problem für Sie untersucht. – Nickolay