Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Java Layoutmanager

  1. #1
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Java Layoutmanager

    Muss ich in Java eigentlich diese hochintelligenten und nervtötenden Layoutmanger für die Maskenerstellung verwenden oder kann man sich das sparen?

    Wenn ich die Komponenten zu Fuß platziere, bin ich bestimmte schneller als mit dieser elenden Rumprobiererei, es sei denn, es gibt soetwas wie den designer von QT.

    Nach vier Stunden nichtszustandebringenmitlayoutmangeres sollte es dann für heute mal genug sein.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  2. #2
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Is was gutes...

    Layoutmanager sind so gesehen was gutes, auch wenn mir das Modell der Boxen und Tabellen in GTK mehr zugesagt hat, da es besser mit designern zu bearbeiten ging.
    Layoutmanager sorgen dafür, dass wenn z.B. deine Schriftgröße von der eingestellten abweicht, dass die Schrift am Ende nicht unter dem nächsten Element verschwindet (weils ja größer wird), sondern das nächste Element verschoben wird.
    Oder wenn jemand dein Fenster vergrößert, dass sich die einzelnen Elemente auch vergrößern.....

    Designer gibt viele, hier ein paar brauchbar:
    netbeans, jbuilder,....

    lg

    PS: Das mit den Layoutmanagern wird schon noch, ist viel gewohnheit...
    Geändert von Lin728 (19-08-2017 um 18:37 Uhr)

  3. #3
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Kommt ganz darauf an, was du machen willst. Je nachdem ist ein Layoutmanager praktischer oder nicht.

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    der Programmieraufwand ist zugegebenermassen gross. Vor allem wenn du das mit Delphi vergleichst.

    Ich habe zwischendurch meine Dialoge für n SWT-Programm auch zuerst mal in Delphi zusammengeklickt und sie dann erst mit Layoutmanager und allem implementiert.

    Wenn du aber konsequent Layoutmanager verwendest ist das nicht nur oft einfacher (anordnen der Komponente bei resize geht dann automatisch) sondern auch sonst sauberer (schon mal unter Windows die Schriftgrössen umgestellt? Die Programme verwenden alle keine Layoutmanager. Oft gehts gut - aber manchmal bricht dann das Chaos aus.)

    Ich würd mich auf keinen Fall darum Drücken, die Dinger zu verwenden.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Also probieren wir unser Glück noch einmal. Habe meine Ansprüche mal auf ein GridLayout (2 Spalten * 2 Reihen) zurückgeschraubt. Geht ja auch, aber zwei Sachen stören mich:

    1. nach dem Starten des Applets im Appletviewer sehe ich nichts. Wenn ich das Fenster in der Größe verändere, werden meine Kmponenten gezeichnet.

    2. Die Komponenten sind überdimensioniert, insbesondere die Label. In einem normalen Fenster steht die Methode pack() zur Verfügung. Was aber mache ich in einem Panel oder Applet?

    hier mal mein Code:

    Code:
    import java.applet.Applet;
    public class jdbio extends Applet {
    	public jdbio(){
    		setName("jdbioApplet");
    	}
        
        
        public void init() {
        	super.init();
        	this.setBounds(150,50,350,250);
    		TPanelFamily panelFamily = new TPanelFamily();
    		add(panelFamily);
        }
        
    	public String getAppletInfo() {
    		return "jdbio Version 1.0, (c) 2003 Hans-G. Normann"; 
    	}
    	
    	public String[][] getParameterInfo() {
    		String[][] ret = {
    			{"nothing to do", "nothing to do", "nothing to do"},
    			{"","",""}
    		};
    		return ret;
    	}
    }
    Code:
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.Panel;
    import java.awt.TextField;
    
    public class TPanelFamily extends Panel {
    	private Label lbNachname = new Label("Nachname");
    	private Label lbVorname = new Label("Vorname");
    	public TextField edVorname = new TextField(30);
    	public TextField edNachname = new TextField(30);
    	public GridLayout gl = new GridLayout(2,2);
    	
    	public TPanelFamily(){
    		setLayout(gl);
    		setSize(150,200);
    		add(lbVorname);
    		add(edVorname);
    		add(lbNachname);
    		add(edNachname);
    	}
    }
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    So Problem 1 (sehe nichts nachdem Appletview gestartet ist) habe ich ja rausbekommen.
    Code:
    	public jdbio(){
    		setName("jdbioApplet");
    	}
    habe irgendwo gelesen, dass das der Construktor (hätte man ja auch dranschreiben können ) sei und man den bei Applets nicht überschreiben darf.

    Das mit den Breiten Spalten bekomme ich nicht in den Griff. Sch..... ........ger
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  7. #7
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182
    Hmm, wegen Problem 1: Versuche einmal ein validate auf die AppletKlasse zu machen.
    z.B. MeinApplet.validate, nachdem du vorher deine ganzen MeinApplet.add(blabla) gemacht hast...

    zu Problem 2:
    Das kann nur GridBagLayout :-(
    Is am Anfang kompliziert, geht aber mit der zeit....

    lg
    Geändert von Lin728 (19-08-2017 um 18:37 Uhr)

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.09.2003
    Beiträge
    10
    schaut euch mal diesen alternativen
    layout-manager an, bin sehr zufrieden damit

    http://www.java-magazin.de/itr/onlin...nodeid,11.html

  9. #9
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Langsam habe ich die Nase voll von Layoutmangern. Wieso machen die eigentlich was sie wollen und nicht das was ich will. Das artet ja in eine ABM aus!

    Ich bringe es einfach nicht fertig, dass meine vier Felder links im Applet stehen. Kann machen was ich will, der Manger ist anderer Meinung.

    Habe dann mal versucht bei den Feldern den Hintergrund einzufärben (um zu sehen wie groß die sind). Der Manager pfeifft mir was.

    Habe auch versucht, ein weiteres Feld zu definieren, weit rechts außen. Der Manager oder wer auch immer hat keine Lust.

    Also wenn man in Java für die Ergründung jedr Komponete eine Woche benötigt, dann sollte ich das ganze einstampfen und irgendwo steinekloppen gehen, ist bestimmt nicht frustrierender und mit Managern hat man da auch weniger zu tun!

    Dann noch einmal schnelle einen letzten Verzweifelten Versuch mit dem Appletviewer. Mist sieht ja anders aus als im Browser! Stelle fest, dass ich den Browse (Mozilla 1.5, FireBird 0.7) jedesmal neu starten muß, damit meine Änderungen angezeigt werden. Shift Reload und Chache löschen zeigten keinen Erfolg. Is ja zum Mäusemelken. OK, werde ich demnächst wieder einmal öfters in den Appltviewr sehen.

    Was jedoch geblieben ist, das die Applets grunsätzlich zentriert angezeigt werden. Habe ich keine Möglichkeit die Ausrichtung nach Belieben zu setzen?

    Mal den aktuellen Stand meines Frustrationslaufes:

    Code:
    import java.applet.Applet;
    import java.awt.Color;
    
    public class jdbio extends Applet {
        public void init() {
        	super.init();
        	this.setName("jdbioApplet");
        	this.setBounds(0,0,350,600);
    		this.setBackground(Color.GREEN);
    		TPanelFamily panelFamily = new TPanelFamily();
    		panelFamily.setBackground(Color.CYAN);
    		add(panelFamily);
        }
        
    	public String getAppletInfo() {
    		return "jdbio Version 1.0, (c) 2003 Hans-G. Normann"; 
    	}
    	
    	public String[][] getParameterInfo() {
    		String[][] ret = {
    			{"nothing to do", "nothing to do", "nothing to do"},
    			{"","",""}
    		};
    		return ret;
    	}
    }
    Code:
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.Label;
    import java.awt.Panel;
    import java.awt.TextField;
    import java.awt.Color;
    
    public class TPanelFamily extends Panel {
    	private Label lbNachname = new Label("Nachname");
    	private Label lbVorname = new Label("Vorname");
    	private Label lbDummy = new Label("<--->");
    	public TextField edVorname = new TextField(30);
    	public TextField edNachname = new TextField(30);
    	public GridBagLayout gbl = new GridBagLayout();
    	private GridBagConstraints gbc; 
    	
    	public TPanelFamily(){
    		setSize(300,500);
    		setLayout(gbl);
    
    		// Row 1
    		gbc = makegbc(0,0,1,1);
    		lbVorname.setBackground(Color.GREEN);
    		gbl.setConstraints(lbVorname, gbc);
    		add(lbVorname);
    		
    		gbc = makegbc(2,0,3,1);
    		gbl.setConstraints(edVorname, gbc);
    		add(edVorname);
    		
    		//Row2
    		gbc = makegbc(0,1,1,1);
    		gbl.setConstraints(lbNachname, gbc);
    		add(lbNachname);
    
    		gbc = makegbc(2,1,3,1);
    		gbl.setConstraints(edNachname, gbc);
    		add(edNachname);
    
    		gbc = makegbc(1,1,1,1);
    		gbl.setConstraints(lbDummy, gbc);
    		lbDummy.setBackground(Color.GREEN);
    		add(lbDummy);
    	
    	}
    
    	/**
    	 * @param gridx
    	 * @param gridy
    	 * @param gridwidth
    	 * @param gridheight
    	 * @return GridBagConstraints
    	 */
    	public GridBagConstraints makegbc(
    	  int x, int y, int width, int height)
    	{
    	  GridBagConstraints lgbc = new GridBagConstraints();
    	  lgbc.gridx = x;
    	  lgbc.gridy = y;
    	  lgbc.gridwidth = width;
    	  lgbc.gridheight = height;
    	  //lgbc.insets = new Insets(1, 1, 1, 1);
    	  //lgbc.fill = GridBagConstraints.NONE;
    	  //lgbc.anchor = GridBagConstraints.WEST;
    	  return lgbc;
    	}
    	
    }
    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  10. #10
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Geht net...

    Das geht net mir einem GridBagLayout, der ordnet die Elemente immer vom Zentrum aus an, die position (nw, w, s, ..) gint nur an, wie die Komponente in einer Zelle liegen soll, die sie nicht ganz ausfüllt.

    lg
    Geändert von Lin728 (19-08-2017 um 18:37 Uhr)

  11. #11
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Re: Geht net...

    Original geschrieben von ceisserer
    PS: So schlimm is es doc nich :-))
    Nee, viel schlimmer

    Sag mal, den TableLayoutManger, wo finde ich den? Habe schon in diversen Quellen nachgesehen. Auch bei sun in der Referenz nicht zu entdecken. Thrid Party?

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  12. #12
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Cool Ächtz .............

    Eigentlich hätte ich ja ein scweißtriefendes Icon anbringen müssen.

    Also wenn ich mein Panel in ein FlowLayout packe, dann bekomme ich das, was ich wollte. Empfinde ich als ein seltsames Verhalten, aber was soll's.

    Na dann werde ich mal weitermachen.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  13. #13
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549

    Re: Re: Geht net...

    Original geschrieben von Hans-Georg Normann
    Sag mal, den TableLayoutManger, wo finde ich den? Habe schon in diversen Quellen nachgesehen. Auch bei sun in der Referenz nicht zu entdecken. Thrid Party?
    im Artikel auf den sich fonz bezog hats zuunterst einen Link zur HP von dem LayoutManager. Der ist Third-Party. Einfach das Jar ziehen und dem CLASSPATH hinzufügen

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  14. #14
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    dann werde ich mir den auch noch einmal zu Gemüte ziehen. Wird schon Schief gehen.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •