why won't my GridLayout behaves itself ?

i set my gridLayout to (5,8) but it seems there allocate only 7 column which made my interface goes haywire..

here's the pic of what's happening now:

http://www.geocities.com/the13thshinobi/app.jpg

while i want something like:

http://www.geocities.com/the13thshinobi/app2.jpg

here's my source code:

import java.awt.*;

import javax.swing.*;

publicclass smallextends JFrame{

double sum;//sum of values entered by user

private JPanel topPanel;

private JLabel l1,l2,l3,l4,l5,l6,lTotal,lAndryusha,lBorya,lVolodya,lBlank,lGiveUp;

private JTextField a1,a2,a3,a4,a5,a6,aTotal,b1,b2,b3,b4,b5,b6,bTotal,c1,c2,c3,c4,c5,c6,cTotal;

private JButton clear,checkAnswer,solve;

private Container container;

private GridLayout g1;

String A1,A2,A3,A4,A5,A6,ATOTAL,B1,B2,B3,B4,B5,B6,BTOTAL,C1,C2,C3,C4,C5,C6,CTOTAL;

public small(){

super("app");

container = getContentPane();

container.setLayout(new BorderLayout());

topPanel =new JPanel(new GridLayout(5,8,5,5));

topPanel.setBackground(Color.WHITE);

lBlank =new JLabel(" blank ");

lGiveUp =new JLabel("Give up? Press this button -->");

l1 =new JLabel("1");

l2 =new JLabel("2");

l3 =new JLabel("3");

l4 =new JLabel("4");

l5 =new JLabel("5");

l6 =new JLabel("6");

lTotal =new JLabel("Total");

lAndryusha =new JLabel("Andryusha");

lBorya =new JLabel("Borya");

lVolodya =new JLabel("Volodya");

a1 =new JTextField();

a2 =new JTextField();

a3 =new JTextField();

a4 =new JTextField();

a5 =new JTextField();

a6 =new JTextField();

aTotal =new JTextField();

b1 =new JTextField();

b2 =new JTextField();

b3 =new JTextField();

b4 =new JTextField();

b5 =new JTextField();

b6 =new JTextField();

bTotal =new JTextField();

c1 =new JTextField();

c2 =new JTextField();

c3 =new JTextField();

c4 =new JTextField();

c5 =new JTextField();

c6 =new JTextField();

cTotal =new JTextField();

clear =new JButton("CLEAR");

solve =new JButton("SOLVE");

checkAnswer =new JButton("ANSWER");

topPanel.add(lBlank);

topPanel.add(l1);

topPanel.add(l2);

topPanel.add(l3);

topPanel.add(l4);

topPanel.add(l5);

topPanel.add(l6);

topPanel.add(lTotal);

topPanel.add(lAndryusha);

topPanel.add(a1);

topPanel.add(a2);

topPanel.add(a3);

topPanel.add(a4);

topPanel.add(a5);

topPanel.add(a6);

topPanel.add(aTotal);

topPanel.add(lBorya);

topPanel.add(b1);

topPanel.add(b2);

topPanel.add(b3);

topPanel.add(b4);

topPanel.add(b5);

topPanel.add(b6);

topPanel.add(bTotal);

topPanel.add(lVolodya);

topPanel.add(c1);

topPanel.add(c2);

topPanel.add(c3);

topPanel.add(c4);

topPanel.add(c5);

topPanel.add(c6);

topPanel.add(cTotal);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(clear);

topPanel.add(checkAnswer);

container.add(topPanel,BorderLayout.NORTH);

setSize(700,400);

setVisible(true);

}

publicstaticvoid main(String args[]){

small s1 =new small();

s1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

any help is greatly appreciated..thanks

[6152 byte] By [imin83a] at [2007-10-2 6:01:30]
# 1

GridLayout adapt himself to the component count in him :

A component can't be more than one time in a container so replace

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(lBlank);

topPanel.add(clear);

topPanel.add(checkAnswer);

by

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(clear);

topPanel.add(checkAnswer);

and there is more than 8 component in the last row so don't try to insert 9 component

antoine.lemoinea at 2007-7-16 13:01:53 > top of Java-index,Desktop,Core GUI APIs...
# 2

Hi,

you mean like that:

import java.awt.*;

import javax.swing.*;

public class small extends JFrame{

double sum;//sum of values entered by user

private JPanel topPanel;

private JLabel l1,l2,l3,l4,l5,l6,lTotal,lAndryusha,lBorya,lVolodya,lBlank,lGiveUp;

private JTextField a1,a2,a3,a4,a5,a6,aTotal,b1,b2,b3,b4,b5,b6,bTotal,c1,c2,c3,c4,c5,c6,cTotal;

private JButton clear,checkAnswer,solve;

private Container container;

private GridLayout g1;

String A1,A2,A3,A4,A5,A6,ATOTAL,B1,B2,B3,B4,B5,B6,BTOTAL,C1,C2,C3,C4,C5,C6,CTOTAL;

public small(){

super("app");

container = getContentPane();

container.setLayout(new BorderLayout());

topPanel = new JPanel(new GridLayout(5,8,5,5));

topPanel.setBackground(Color.WHITE);

lBlank = new JLabel(" blank ");

lGiveUp = new JLabel("Give up? Press this button -->");

l1 = new JLabel("1");

l2 = new JLabel("2");

l3 = new JLabel("3");

l4 = new JLabel("4");

l5 = new JLabel("5");

l6 = new JLabel("6");

lTotal = new JLabel("Total");

lAndryusha = new JLabel("Andryusha");

lBorya = new JLabel("Borya");

lVolodya = new JLabel("Volodya");

a1 = new JTextField();

a2 = new JTextField();

a3 = new JTextField();

a4 = new JTextField();

a5 = new JTextField();

a6 = new JTextField();

aTotal = new JTextField();

b1 = new JTextField();

b2 = new JTextField();

b3 = new JTextField();

b4 = new JTextField();

b5 = new JTextField();

b6 = new JTextField();

bTotal = new JTextField();

c1 = new JTextField();

c2 = new JTextField();

c3 = new JTextField();

c4 = new JTextField();

c5 = new JTextField();

c6 = new JTextField();

cTotal = new JTextField();

clear = new JButton("CLEAR");

solve = new JButton("SOLVE");

checkAnswer = new JButton("ANSWER");

topPanel.add(lBlank);

topPanel.add(l1);

topPanel.add(l2);

topPanel.add(l3);

topPanel.add(l4);

topPanel.add(l5);

topPanel.add(l6);

topPanel.add(lTotal);

topPanel.add(lAndryusha);

topPanel.add(a1);

topPanel.add(a2);

topPanel.add(a3);

topPanel.add(a4);

topPanel.add(a5);

topPanel.add(a6);

topPanel.add(aTotal);

topPanel.add(lBorya);

topPanel.add(b1);

topPanel.add(b2);

topPanel.add(b3);

topPanel.add(b4);

topPanel.add(b5);

topPanel.add(b6);

topPanel.add(bTotal);

topPanel.add(lVolodya);

topPanel.add(c1);

topPanel.add(c2);

topPanel.add(c3);

topPanel.add(c4);

topPanel.add(c5);

topPanel.add(c6);

topPanel.add(cTotal);

//topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(new JLabel(" blank "));

topPanel.add(clear);

topPanel.add(checkAnswer);

container.add(topPanel,BorderLayout.NORTH);

setSize(700,400);

setVisible(true);

}

public static void main(String args[]){

small s1 = new small();

s1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

L.P.

lukika at 2007-7-16 13:01:54 > top of Java-index,Desktop,Core GUI APIs...
# 3
thanks a lot, antoine.lemoine for the solution. It works just as I wanted.and thanks to lukik too, for your assistance.
imin83a at 2007-7-16 13:01:54 > top of Java-index,Desktop,Core GUI APIs...