package testerapplication;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.swing.*;
public class TesterApplication {
static JPanel CenterPanel;
static JPanel UpperPanel;
static JPanel CreationPanel;
static JPanel UpCreationPanel;
static JPanel DownCreationPanel;
static JPanel MenuPanel;
static JFrame frame;
JTextField RoadNameTextField;
JTextField BusNameTextField;
JTextField StopNameTextField;
TesterApplication(){
JFrame frame=new JFrame("Bus Map");
CenterPanel = new JPanel();
CenterPanel.setBackground(Color.black);
UpperPanel=new JPanel();
UpperPanel.setLayout(new BoxLayout(UpperPanel,BoxLayout.Y_AXIS));
MenuPanel=new JPanel();
MenuPanel.setBackground(Color.red);
CreationPanel=new JPanel();
CreationPanel.setBackground(Color.blue);
UpCreationPanel=new JPanel();
UpCreationPanel.setBackground(Color.blue);
DownCreationPanel=new JPanel();
DownCreationPanel.setBackground(Color.green);
//build text fields and put them into panel
BusNameTextField= new JTextField("Bus ",10);
StopNameTextField= new JTextField("Stope ",10);
RoadNameTextField= new JTextField("Street ",10);
UpCreationPanel.add(BusNameTextField);
UpCreationPanel.setLayout(new BoxLayout(UpCreationPanel,BoxLayout.X_AXIS));
DownCreationPanel.add(BorderLayout.WEST,StopNameTextField);
DownCreationPanel.add( RoadNameTextField);
CreationPanel.setLayout(new BoxLayout(CreationPanel,BoxLayout.Y_AXIS));
CreationPanel.add(UpCreationPanel);
CreationPanel.add(DownCreationPanel);
UpperPanel.add(MenuPanel);
UpperPanel.add(CreationPanel);
frame.getContentPane().add(BorderLayout.NORTH, UpperPanel);
frame.getContentPane().add(BorderLayout.CENTER,CenterPanel);
frame.setSize(600, 480);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String[] args){
new TesterApplication();
}
}
[IMG] http://i60.tinypic.com/2yo3n21.png[/IMG]
问题是,或者更好。为什么BusNameTextField占用了所有窗口,为什么StopNameTextField不会进入窗口的WEST-end,并且没有Blue UpCreationPanel是正常的,同时还存在Green DownCreationPanel。
我的目的是让三个小的TextField全部放在左边," Stope"和"街"一个接一个地去。
答案 0 :(得分:2)
默认情况下,JPanel使用FlowLayout。
如果您希望垂直显示组件,则可以使用垂直BoxLayout
或GridBagLayout
。
修复代码以遵循Java命名约定。变量名称不以大写字符开头。 “CenterPanel”应该是“centerPanel”等。
最后不要使用静态变量。如果您对组件面板使用静态变量,则程序的设计是错误的。
阅读How to Use Layout Managers上Swing教程中的部分,了解有关布局的更多信息以及如何构建程序的更好示例,包括在事件调度线程上创建GUI。