首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java界面,该怎么解决

2013-07-04 
java界面初学界面设计,再使用GridLayout时大小的控制很凌乱,求大神指教(希望序列号下面的空白地方小一点。)

java界面
java界面,该怎么解决

初学界面设计,再使用GridLayout时大小的控制很凌乱,求大神指教
(希望序列号下面的空白地方小一点。)

贴上代码,代码 规范功力不强,求指导






import javax.swing.*;

import java.awt.*;

public class InfoFrame {

JFrame frame = new JFrame("信息录入");

JPanel panel = new JPanel(); //主面板

JPanel panel1 = new JPanel();//序列号面板
JPanel panel2 = new JPanel();//客户信息面板
JPanel panel21 = new JPanel();//客户子面板
JPanel panel22 = new JPanel();//客户子面板
JPanel panel23 = new JPanel();//客户子面板
JPanel panel24 = new JPanel();//客户子面板
JPanel panel3 = new JPanel();//代理商面板
JPanel panel31 = new JPanel();//代理商子面板
JPanel panel32 = new JPanel();//代理商子面板
JPanel panel33 = new JPanel();//代理商子面板
JPanel panel4 = new JPanel();//按钮面板

GridLayout gridlayout = new GridLayout(3,1);//主面板布局方法
GridLayout clientLayout = new  GridLayout(5, 1);
GridLayout agentLayout = new GridLayout(4, 1);
FlowLayout layout = new FlowLayout();  //所有面板都使用同种布局

JLabel clientTitleLabel = new JLabel("客户信息");
JLabel agentTitileLabel = new JLabel("代理商信息");

JLabel serNumLabel = new JLabel("序列号");
JTextField serNumText = new JTextField(20);

JLabel clientCompanyLabel = new JLabel("客户名称");
JTextField clientCompanyText = new JTextField(20);

JLabel clientAdressLabel = new JLabel("地址");
Choice clientAdress1Choice = new Choice();
Choice clientAdress2Choice = new Choice();

JLabel clientManLabel = new JLabel("联系人");
JTextField clientManText = new JTextField(20);

JLabel clientPhoneLabel = new JLabel("联系电话");
JTextField clientPhoneText = new JTextField(20);

JLabel agentCompanyLabel = new JLabel("代理商");
JTextField agentCompanyText = new JTextField(20);

JLabel agentManLabel = new JLabel("业务员");
JTextField agentManText = new JTextField(20);

JLabel agentPhoneLabel = new JLabel("联系电话");
JTextField agentPhoneText = new JTextField(20);



JButton sumbitButton = new JButton("提交");
JButton cannelButton = new JButton("取消");



public InfoFrame() {

frame.getContentPane().add(panel,BorderLayout.CENTER);
frame.getContentPane().add(panel4,BorderLayout.SOUTH);

panel.setLayout(gridlayout);
panel.add(panel1);
panel.add(panel2);
panel.add(panel3);

panel1.setLayout(layout);
panel1.add(serNumLabel);
panel1.add(serNumText);

panel2.setLayout(clientLayout);
panel2.add(clientTitleLabel);
panel2.add(panel21);
panel2.add(panel22);
panel2.add(panel23);
panel2.add(panel24);
panel21.setLayout(layout);
panel21.add(clientCompanyLabel);
panel21.add(clientCompanyText);
panel22.setLayout(layout);
panel22.add(clientAdressLabel);
panel22.add(clientAdress1Choice);
panel22.add(clientAdress2Choice);
panel23.setLayout(layout);
panel23.add(clientManLabel);
panel23.add(clientManText);
panel24.setLayout(layout);
panel24.add(clientPhoneLabel);
panel24.add(clientPhoneText);

panel3.setLayout(agentLayout);
panel3.add(agentTitileLabel);
panel3.add(panel31);
panel3.add(panel32);
panel3.add(panel33);
panel31.setLayout(layout);
panel31.add(agentCompanyLabel);
panel31.add(agentCompanyText);
panel32.setLayout(layout);
panel32.add(agentManLabel);
panel32.add(agentManText);
panel33.setLayout(layout);
panel33.add(agentPhoneLabel);
panel33.add(agentPhoneText);

panel4.add(sumbitButton);
panel4.add(cannelButton);

String[] clientAdress1 = {"江苏","浙江","湖南","安徽","四川","云南"};
for(int i = 0;i < 6;i++)
{
clientAdress1Choice.addItem(clientAdress1[i]);
}

String[] clientAdress2 = {"南京","常州","无锡","南通","苏州","徐州","扬州","镇江","杭州","重庆","昆明"};
for(int i = 0; i < 11;i++)
{
clientAdress2Choice.addItem(clientAdress2[i]);
}

frame.setSize(500,500);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int)screenSize.getWidth()/2 - frame.getWidth()/2; 
int y = (int)screenSize.getHeight()/2- frame.getHeight()/2;
frame.setLocation(x, y);
frame.setVisible(true);

}

public static void main(String[] args) {
new InfoFrame();
}

}


Java 布局 String
[解决办法]
出现上述原因是楼主将“客户信息”,“序列号信息”,“代理商信息”三个面板放在同一个GridLayout里,这三行所占的大小是均等的!
将序列号放在最外层面板的北部即可。


[解决办法]
GridLayout(3,1)其实是将主面板分成了三等分,每个等分所占的空间是一样大的;由于第一个没有占满空间,因袭显示出来的效果是有很大的空白。
要想去掉空白,建议楼主重新布局。可以将序列号这行,放在panel2中处理。java界面,该怎么解决

热点排行