Re: What is the problem here, LayoutManagers.
iMohed@live.se wrote:
Hello guys. I have a Problem in the following code. The result is that
only one MFrame shows up in the window instead of the two constructed.
What is wrong and why ?? Thanks in advance for any aid.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sspclient;
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author mohed
*/
public class View extends JFrame implements ActionListener{
private final String[] type = {"Sten","Sax","P?se"};
MFrame[] frames = new MFrame[2];
public class MFrame extends JPanel{
JLabel name = new JLabel("Name");
JTextField msg = new JTextField("msg");
JPanel buttons = new JPanel();
JButton[] sSP = new JButton[3];
JLabel status = new JLabel("Status");
JTextField score = new JTextField("Score");
}
public View(){
for (MFrame mF : this.frames) {
mF = new MFrame();
mF.setLayout(new BoxLayout(mF, BoxLayout.PAGE_AXIS));
mF.add(mF.name);
mF.add(mF.msg);
mF.buttons.setLayout(new BoxLayout(mF.buttons,
BoxLayout.LINE_AXIS));
for (JButton jB : mF.sSP) {
jB = new JButton();
mF.buttons.add(jB);
}
mF.add(mF.buttons);
mF.add(mF.status);
mF.add(mF.score);
this.add(mF);
}
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
public static void main( String[] args ){
View v = new View();
}
}
Mohamed Haidar
By default a JFrame has BorderLayout as its layout manager. The add()
method without an argument adds the component to the
BorderLayout.CENTER. So one is hidden by the other. Also you need to
size your JFrame with either pack() or setSize(). In addition, the
creation of Swing components needs to be done on the event dispatch thread.
import javax.swing.*;
import java.awt.*; // needed for the FlowLayout
import java.awt.event.*;
/**
*
* @author mohed
*/
public class View extends JFrame implements ActionListener{
private final String[] type = {"Sten","Sax","P?se"};
MFrame[] frames = new MFrame[2];
public class MFrame extends JPanel{
JLabel name = new JLabel("Name");
JTextField msg = new JTextField("msg");
JPanel buttons = new JPanel();
JButton[] sSP = new JButton[3];
JLabel status = new JLabel("Status");
JTextField score = new JTextField("Score");
}
public View(){
// View needs a different layout mgr
setLayout(new FlowLayout());
for (MFrame mF : this.frames) {
mF = new MFrame();
mF.setLayout(new BoxLayout(mF, BoxLayout.PAGE_AXIS));
mF.add(mF.name);
mF.add(mF.msg);
mF.buttons.setLayout(new BoxLayout(mF.buttons,
BoxLayout.LINE_AXIS));
for (JButton jB : mF.sSP) {
jB = new JButton();
mF.buttons.add(jB);
}
mF.add(mF.buttons);
mF.add(mF.status);
mF.add(mF.score);
this.add(mF);
}
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack(); // View needs to be sized
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
public static void main( String[] args ){
// you should wrap this in EventQueue.invokLater()
View v = new View();
}
}
--
Knute Johnson
email s/nospam/knute2009/
--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access