开发者

How to align Button in a JPanel this way

开发者 https://www.devze.com 2023-03-30 11:03 出处:网络
I\'m trying to create a graphic interface using JPanel and JButton.So far it\'s good except when I\'m creating the JButton instances, they seem to align within the same line.I want every button to be

I'm trying to create a graphic interface using JPanel and JButton. So far it's good except when I'm creating the JButton instances, they seem to align within the same line. I want every button to be in one line, not all in the same line.

How do I achieve the desired effect?

public class Interface  extends JFrame{

    public  Interface ()
    {
    //frame 
        super("Panel");
        pack();
        setSize(500,400);
        setVisible(true);

    //declaration container
    Container c;
    c=getContentPane();
    c.setLayout(new BorderLayout());
    //declaration des panel avec leurs caracteristiques

    JPanel menu =new JPanel();
    JPanel MessageList =new JPanel();
    JPanel about=new JPanel();

    menu.setLayout(new FlowLayout());
    MessageList.setLayout(new FlowLayout());
    about.setLayout(new FlowLayout());

    menu.setBackground(Color.blue);
    MessageList.setBackground(Color.cyan);
    about.setBackground(Color.cyan);

    c.add(menu,BorderLayout.WEST);
    c.add(MessageList,BorderLayout.EAST);
    c.add(about,BorderLayout.SOUTH);
    //--------Button---------------------
    JButton button1=new JButton("button1");
    JButto开发者_开发百科n button2=new JButton("Button2");

    menu.add(button1);
    menu.add(button2);
    //-----------------------------
        }

    public static void main(String args[])
    {
        Interface Message=new Interface();
        Message.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}


If you want to stack components, use BoxLayout. Also, make sure to follow the suggestions made by @camickr.

See also:

  • How to Use BoxLayout


Use a nested layout. The yellow and blue panels each have their own layout, and are then placed in constraints of the larger layout.

How to align Button in a JPanel this way

import java.awt.*;
import javax.swing.*;

public class Interface  extends JFrame{

    public  Interface ()
    {
        //frame
        super("Panel");

        //declaration container
        Container c;
        c=getContentPane();
        c.setLayout(new BorderLayout());
        c.setBackground(Color.white);
        //declaration des panel avec leurs caracteristiques

        JPanel menu =new JPanel(new GridLayout(0,1,3,3));
        JPanel messageList =new JPanel(new FlowLayout());
        JPanel about=new JPanel(new FlowLayout());

        menu.setBackground(Color.blue);
        messageList.setBackground(Color.cyan);
        messageList.add(new JLabel("'messageList' padder"));
        about.setBackground(Color.green);
        about.add(new JLabel("'about' padder"));

        JPanel menuConstrain = new JPanel(new BorderLayout());
        menuConstrain.setBackground(Color.yellow);

        menuConstrain.add(menu,BorderLayout.NORTH);
        c.add(menuConstrain,BorderLayout.WEST);
        c.add(messageList,BorderLayout.EAST);
        c.add(about,BorderLayout.SOUTH);
        //--------Button---------------------
        JButton button1=new JButton("button1");
        JButton button2=new JButton("Button2");

        menu.add(button1);
        menu.add(button2);
        //-----------------------------

        pack();
        setSize(300,150);
        setVisible(true);
    }


    public static void main(String args[])
    {
        Interface Message=new Interface();
        Message.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

For a more comprehensive example of using nested layouts, see NestedLayoutExample.java.


BTW - That is some confusingly written code!

  1. It uses the common 'camel case' nomenclature sometimes, but not others.
  2. There is a concrete class with name Interface.
  3. There is a panel named menu.
  4. The frame appears on-screen titled Panel.
  5. Try putting comments in Ethiopian next time. I read that about as well as I read French.
  6. That all combined with the inconsistent indentation, results in code that is hard to read & understand.

Is this a poor man's form of obfuscation?


Note that Swing GUIs should be created on the EDT.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号