Splitter Bildschirm proportional lwuit
-
26-10-2019 - |
Frage
Ich möchte den Bildschirm um 30% und 70% vertikal teilen. Wie kann ich dies mit LWUit erreichen? Ich habe/ausprobiert GridLayout
Aber es spaltet den Bildschirm gleich. Benötigen Sie dafür einen Beispielcode.
Danke im Voraus!
Lösung
Beide anderen Antworten schließen beim Drehen des Bildschirms eines Geräts fehl.
Sie können zwei Ansätze verfolgen und ein Tabellenlayout verwenden, das die prozentuale Verteilung der Layoutbeschränkungen unterstützt.
Oder eine Unterklasse von erstellen Contaienr
das überschreibt die calcPreferredSize
Methode und gibt eine Dimension von 30 oder 70 Prozent entsprechend zurück. Dann fügen Sie einfach beide zu a hinzu BoxLayout
Container und verwenden Sie wie gewünscht, zB:
Container c30 = new Container() {
public Dimension calcPreferredSize() {
new Dimension(Display.getInstance().getPreferredHeight(), (int)(Display.getInstance().getPreferredWidth() * 0.7));
}
};
Andere Tipps
Erstellen Sie eine Klasse, die den Container ableitet:
public class split extends Container {
public split(int h)
{
super(); // you can set your layout type here
setPreferredH(h);
}
}
Fügen Sie dann Komponenten dieser Klasse in Ihrer Form hinzu:
public class e extends Form {
private Container c1, c2;
private TextField f1,f2;
public e()
{
super("test split");
c1 = new split(30*getPreferredH()/100);
c2 = new split(70*getPreferredH()/100);
f1 = new TextField("ghgjhg");
f2 = new TextField("jkdhuhg");
c1.addComponent(f1);
c2.addComponent(f2);
setLayout(new BoxLayout(BoxLayout.Y_AXIS));
addComponent(c1);
addComponent(c2);
}
}
Sie können sogar a einstellen backgroundPainter
in die geteilte Klasse, um die Spaltung visuell anzuzeigen.