BoxLayout Can't be shared.

I run the following code as s5.java

import javax.swing.*;

import java.awt.*;

//<applet code="s5.class" width=300 height=400></applet>

publicclass s5extends JApplet

{

JPanel colpanel, logpanel, mainpanel;

JLabel l,l1,l2;

JButton b,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14;

JTextField t,t1,t2;

GridBagLayout gbl;

GridLayout g1;

GridBagConstraints gbc;

BoxLayout bl;

publicvoid init()

{

b =new JButton("Login");

g1 =new GridLayout(8,2);

colpanel =new JPanel();

colpanel.setLayout(g1);

gbl =new GridBagLayout();

gbc =new GridBagConstraints();

logpanel =new JPanel();

logpanel.setLayout(gbl);

l =new JLabel("Calculator Panel");

t =new JTextField(10);

b1 =new JButton("1");

b2 =new JButton("2");

b3 =new JButton("3");

b4 =new JButton("4");

b5 =new JButton("5");

b6 =new JButton("6");

b7 =new JButton("7");

b8 =new JButton("8");

b9 =new JButton("9");

b10 =new JButton("+");

b11 =new JButton("-");

b12 =new JButton("/");

b13 =new JButton("*");

b14 =new JButton("CALCULATE");

l1 =new JLabel("Customer Login Name");

l2 =new JLabel("Password");

t1 =new JTextField(10);

t2 =new JTextField(10);

//t = new JTextField(19);

gbc.anchor = GridBagConstraints.NORTHWEST;

gbc.gridx = 1;

gbc.gridy = 5;

gbl.setConstraints(l1,gbc);

logpanel.add(l1);

gbc.anchor = GridBagConstraints.NORTHWEST;

gbc.gridx = 4;

gbc.gridy = 5;

gbl.setConstraints(t1,gbc);

logpanel.add(t1);

gbc.anchor = GridBagConstraints.NORTHWEST;

gbc.gridx = 1;

gbc.gridy = 8;

gbl.setConstraints(l2,gbc);

logpanel.add(l2);

gbc.anchor = GridBagConstraints.NORTHWEST;

gbc.gridx = 4;

gbc.gridy = 8;

gbl.setConstraints(t2,gbc);

logpanel.add(t2);

gbc.anchor = GridBagConstraints.NORTHWEST;

gbc.gridx = 3;

gbc.gridy = 11;

gbl.setConstraints(b,gbc);

logpanel.add(b);

colpanel.add(l);

colpanel.add(t);

colpanel.add(b1);

colpanel.add(b2);

colpanel.add(b3);

colpanel.add(b4);

colpanel.add(b5);

colpanel.add(b6);

colpanel.add(b7);

colpanel.add(b8);

colpanel.add(b9);

colpanel.add(b10);

colpanel.add(b11);

colpanel.add(b12);

colpanel.add(b13);

colpanel.add(b14);

mainpanel =new JPanel();

bl =new BoxLayout(mainpanel,BoxLayout.X_AXIS);

bl.addLayoutComponent("Calculator" , colpanel);

bl.addLayoutComponent("Information" , logpanel);

getContentPane().add(mainpanel);

mainpanel.add(colpanel);

mainpanel.add(logpanel);

}

}

It gets compiled properly. But when I run it using appletviewer, it shows an error saying BoxLayout Can't be shared.

I am using JDK 6.

[4832 byte] By [nspeaksa] at [2007-11-27 10:57:30]
# 1

mainpanel = new JPanel();

bl = new BoxLayout(mainpanel,BoxLayout.X_AXIS);

bl.addLayoutComponent("Calculator" , colpanel);

bl.addLayoutComponent("Information" , logpanel);

This is not correct way to use box layout.

Try following:

mainpanel = new JPanel();

bl = new BoxLayout(mainpanel,BoxLayout.X_AXIS);

mainpanel.setLayout(bl);

mainpanel.add(colpanel);

mainpanel.add(logpanel);

addLayoutComponent is not used with BoxLayout. See the documentation for BoxLayout. Also you might find this useful:

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

AshwineeJhaa at 2007-7-29 12:09:32 > top of Java-index,Desktop,Core GUI APIs...
# 2

Your code runs the applet, but the output is not as desired. It just shows a plain blank applet.

Ok got it. Actually you forgot to mention one change in your code:

Correct code is:

mainpanel = new JPanel();

bl = new BoxLayout(mainpanel,BoxLayout.X_AXIS);

getContentPane().add(mainpanel);

mainpanel.setLayout(bl);

mainpanel.add(colpanel);

mainpanel.add(logpanel);

Message was edited by:

nspeaks

nspeaksa at 2007-7-29 12:09:32 > top of Java-index,Desktop,Core GUI APIs...