我正在尝试使用JPanel
和JButton
创建图形界面。到目前为止它很好,除非我在创建JButton
实例时,它们似乎在同一行内对齐。我希望每个按钮都在一行中,而不是全部在同一行。
如何达到预期效果?
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");
JButton 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);
}
}
答案 0 :(得分:2)
答案 1 :(得分:2)
使用嵌套布局。黄色和蓝色面板每个都有自己的布局,然后放置在较大布局的约束中。
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);
}
}
有关使用嵌套布局的更全面示例,请参阅NestedLayoutExample.java
。
Interface
的具体类。menu
的小组。Panel
。这是一个穷人的混淆形式吗?
请注意,应在EDT上创建Swing GUI。