ScrollPane Flow Layout

Status
Nicht offen für weitere Antworten.

millinär

Bekanntes Mitglied
ich hab ein Panel mit FlowLAyout und das mach ich dann in eine scrollpane :
Code:
	sp=new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
			sp.setSize(100,100);
			tf=new TextField[alls.length];
		Panel P=new Panel();
		P.setSize(100,100);
		P.setLayout(new FlowLayout());
			for(int i=0;i<alls.length;i++){
				tf[i]=new TextField(alls[i]);
				tf[i].addActionListener(this);
				P.add(tf[i]);
				}
				P.validate();
				sp.add(P);
aber die DialogElemente werden immer in einer Reihe gezeigt aber es kommt nie ein ZeilenUmbruch so das die Componenten in einer neuen reihe angezeigt werden ich will aber das die Componenten mal in einer neuen Reihe angezeigt werden weiß jemand ob das Möglich ist?
 
FlowLayout() stellt die Komponenten immer nur nebeneinander dar. Du mußt ein anderes Layout nehmen. BoxLayout zum Beispiel. Schau mal in die API.
 
millinär hat gesagt.:
ich hab ein Panel mit FlowLAyout und das mach ich dann in eine scrollpane..
aber die DialogElemente werden immer in einer Reihe gezeigt aber es kommt nie ein ZeilenUmbruch so das die Componenten in einer neuen reihe angezeigt werden ich will aber das die Componenten mal in einer neuen Reihe angezeigt werden ..
Code:
//package layout;
/*
 * FlowDemo.java
 */
import java.awt.*;
import java.awt.event.*;
public class FlowDemo extends Frame implements ActionListener{
    private ScrollPane sp;
    private TextField[] tf;
    private String[] alls = new String[]{"Mein Testtextfeld 01", "Mein Testtextfeld 02",
    "Mein Testtextfeld 03", "Mein Testtextfeld 04", "Mein Testtextfeld 05", "Mein Testtextfeld 06",
    "Mein Testtextfeld 07", "Mein Testtextfeld 08", "Mein Testtextfeld 09", "Mein Testtextfeld 10",
    "Mein Testtextfeld 11", "Mein Testtextfeld 12", "Mein Testtextfeld 13", "Mein Testtextfeld 14",
    "Mein Testtextfeld 15", "Mein Testtextfeld 16"};
    public FlowDemo() {
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                exitForm(evt);
            }
        });
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-400)/2, (screenSize.height-200)/2, 400, 200);
        sp=new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
        tf=new TextField[alls.length];
        Panel panel=new Panel();
        panel.setPreferredSize(new Dimension(370,0));
        panel.setLayout(new FlowLayout());
        for(int i=0;i<alls.length;i++){
            tf[i]=new TextField(alls[i]);
            tf[i].addActionListener(this);
            tf[i].setColumns(22);
            panel.add(tf[i]);
            panel.setPreferredSize(new Dimension(panel.getPreferredSize().width, panel.getPreferredSize().height+14));
        }
        sp.add(panel);
        add(sp);
    }
    /** Exit the Application */
    private void exitForm(WindowEvent evt) {
        System.exit(0);
    }
    public static void main(String args[]) {
        new FlowDemo().setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        System.out.println("OK");
    }
}
 
Hallo,

versuchs mal mit dem GridLayout, indem du die Zeile 7 deines Codes mit
Code:
P.setLayout(new GridLayout(alls.length, 1));
ersetzt.

Wenn du deine Daten mit den Textfeldern wie eine Tabelle anzeigen lassen willst, dann solltest du auch eine Tabelle benutzen.
In einer Tabelle kann man auch auf jede Änderung in einer Zelle mit einem Listener reagieren.
 
André Uhres hat gesagt.:
Code:
        panel.setPreferredSize(new Dimension(370,0));

das war was ich brauchte ich habs mit setSize probiert aber nicht mit setPrefferedSize
jetzt werden sie nicht mehr alle in einer reihe angezeigt

André Uhres hat gesagt.:
Code:
/* 
* FlowDemo.java 
*/

fast genau das geiche programm das ich schreiben wollte aber mit Dialog statt Frame

THX :toll:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben