Problem z GridBagLayout

0

Witam. Mam problem z GridBagLayoutem. Stosuje go w kilku okienkach i w kazdym jest ten sam problem. Problem polega na tym ze layout jest wysrodkowany wzgledem obu osi na JFramie. Wywolanie na jego rzecz metod: getLayoutAligmentX() oraz getLAyoutAligmentY() zwraca 0.5. Lewy gorny rog layoutu znajduje sie dokladnie na srodku okienka. Wiec aby zobaczyc wszystkie komponenty musze okienko rozciagnac do rozmiaru czterokrotnie wiekszego niz powinienem i widze je w prawym dolnym rogu okna. Niestety nie moge znalezc metod za pomoca ktorych mogl bym zmienic polozenie layoutu wzgledem okna. Z gory dziekuje za pomoc i pozdrawiam.

0

Wrzuć swojego koda co tak mąci w tym oknie....

0
public Zestawienie(Zarzadca zarz) throws SQLException
	{
		ja = this;
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setVisible(true);
		setTitle("Generator zestawienia");
		DatabaseMetaData dbmd = zarz.getCon().getMetaData();
		ResultSet rs = dbmd.getTables(null, "dbo", null, null);
		GridBagLayout gbl = new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints constraints = gbl.getConstraints(this);
		constraints.anchor = GridBagConstraints.NORTHWEST;
		//constraints.fill = GridBagConstraints.BOTH;
		PanelTabeli pan = null;
		JLabel opis = new JLabel("Zaznacz kolumny z poszczegolnych tabel ktore chcesz zawrzec w zestawieniu.");
		constraints.gridwidth = GridBagConstraints.REMAINDER;
		gbl.setConstraints(opis, constraints);
		add(opis);
		int i = 0;
		while(rs.next())
		{
			System.out.println(rs.getString("TABLE_SCHEM"));
			constraints.gridwidth = GridBagConstraints.RELATIVE;
			if(i >= 2)
			{
				constraints.gridwidth = GridBagConstraints.REMAINDER;
				i = 0;
			}
			else
				i++;
			pan = new PanelTabeli(dbmd, rs.getString("TABLE_NAME"));
			pan.setBorder(new TitledBorder(pan.getName()));
			gbl.setConstraints(pan, constraints);
			add(pan);
		}
		constraints.gridwidth = GridBagConstraints.REMAINDER;
		constraints.gridheight = GridBagConstraints.REMAINDER;
		JButton dalej = new JButton("Zestaw");
		dalej.addActionListener(new ListenerZestawienia());
		gbl.setConstraints(dalej, constraints);
		add(dalej);
		pack();
	}

Oprucz tego ze wypelnianie okienka nie zaczyna sie od lewego gornego rogu to jeszcze trzecia kolumna obiektow PanelTabeli nie wyrownuje mi sie do drugiej a zaczyna w miejscu gdzie konczy sie JLabel opis chociaz nie znajduje sie na tej samej wysokosci. Tak jakby rozciaga mi druga kolumne.
Pozdrawiam

0

Uuuuu widzę że nieźle mąci;).....ogólnie to strasznie napisane jest i dużo zonków...

Wrzuć jakiś ładny rysunek z layoutem tego okna jak to ma wyglądać, jak tak nie dajesz z tym rady.

A do tego co wydaje mi się że chcesz zrobić wcale nie potrzebujesz GBC...

No i polecam:

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

I generalnie wszystkie wcześniejsze tutoriale nawet bardziej.....
Mieszasz logikę z prezentacją...

Nie używaj REMAINDER czy RELATIVE tylko określ te wartości....

Pozdrawiam
</quote>

0

:) chodzi mi o to zeby na samej gorze znalazl sie napis a ponizej panele z zawartoscia tabel z bazy danych. Panele maja byc trzy w wierszu i ich liczba bedzie sie zmieniac.A pod panelami przycisk.

0

Witam. Mam podobny problem (jestem początkującym w Javie, ale programuje troche ...hmm no teraz na studiach to troche wiecej ;) ) ze ciagle sciaga mi wszystkie obiekty na srodek dokladnie to wyglada tak :

user image

A chcialbym aby to sie znalazlo w gornym lewy rogu .

A oto petla dodajaca pojednycze buttony robiace plansze (nie zabijac za uzycie . myslalem nad samymi grafikiami uzylem "na czuja" buttony jako ze ladnie mi wszystko zmienia ich grafiki i lapie klikanie myszka)

   void Generate(){
        for (int i=0; i<6;i++){
            for (int j=0; j<6 ;j++){
                GameBoard[i][j] = new CMyButton(Data._GBoardTypes[i][j]); //button + rozne takie ;]
                GameBoard[i][j]._pole = new javax.swing.JButton();
                GameBoard[i][j]._pole.setIcon(Resources._land[Data._GBoardGraphs[i][j]]);
                GameBoard[i][j]._pole.setBorder(null);
                GameBoard[i][j]._pole.setContentAreaFilled(false);
                GameBoard[i][j]._pole.setMargin(new java.awt.Insets(0, 0, 0, 0));
                GameBoard[i][j]._pole.setRolloverIcon(Resources._land[Data._GBoardGraphs[i][j]]);
                GameBoard[i][j].addActionListener(Debug, Ego); //to moja wlasna funkcja dodajaca
                gridBagConstraints = new java.awt.GridBagConstraints();
                gridBagConstraints.gridx = i;
                gridBagConstraints.gridy = j;
                add(GameBoard[i][j]._pole, gridBagConstraints);
            }
        }    
    }

0

A TextBox Debug to zebym sobie mogl przegladac zmiennych kilka na biezaca (moze to malo PRO ale wygodne ;p )

1 użytkowników online, w tym zalogowanych: 0, gości: 1