java界面

wangbylove 2013-07-01 01:31:47


初学界面设计,再使用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();
}

}


...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxm2015 2013-07-01
  • 打赏
  • 举报
回复
引用 6 楼 wangbylove 的回复:
[quote=引用 2 楼 FirstHelloWorld 的回复:] 出现上述原因是楼主将“客户信息”,“序列号信息”,“代理商信息”三个面板放在同一个GridLayout里,这三行所占的大小是均等的! 将序列号放在最外层面板的北部即可。
北部的是留着给菜单栏的,我记忆中好像时GridLayout中的可以单独设置大小[/quote] GridLayout的单元格应该是均等吧!貌似不能单独修改单元格 楼主可以采用3L的方法将panel1 放在panel2中进行处理 要么利用1L的绝对定位的方法
wangbylove 2013-07-01
  • 打赏
  • 举报
回复
引用 2 楼 FirstHelloWorld 的回复:
出现上述原因是楼主将“客户信息”,“序列号信息”,“代理商信息”三个面板放在同一个GridLayout里,这三行所占的大小是均等的! 将序列号放在最外层面板的北部即可。
北部的是留着给菜单栏的,我记忆中好像时GridLayout中的可以单独设置大小
Inhibitory 2013-07-01
  • 打赏
  • 举报
回复
我习惯了使用TableLayout,很简单。
huntor 2013-07-01
  • 打赏
  • 举报
回复
使用JGoodies FormLayout或 MigLayout,jdk自带的不是功能太弱,就是太繁琐。
StevenLoveMaggie 2013-07-01
  • 打赏
  • 举报
回复
GridLayout(3,1)其实是将主面板分成了三等分,每个等分所占的空间是一样大的;由于第一个没有占满空间,因袭显示出来的效果是有很大的空白。 要想去掉空白,建议楼主重新布局。可以将序列号这行,放在panel2中处理。
zhangxm2015 2013-07-01
  • 打赏
  • 举报
回复
出现上述原因是楼主将“客户信息”,“序列号信息”,“代理商信息”三个面板放在同一个GridLayout里,这三行所占的大小是均等的! 将序列号放在最外层面板的北部即可。
rumlee 2013-07-01
  • 打赏
  • 举报
回复
不要用GridLayout,用XYLayout,你就可以想往哪拖就往哪拖了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧