java中的JTextField在GridLayout中怎么设置大小? 20
把文本框和密码框,在放入一个JPanel里,然后把这个JPanel放入到网格布局里即可
代码如下
//核心代码第一部分, 设置文本框,密码框长度
wbk = new JTextField(8);//在这个窗口大小里,设置长度为8,比较合适
mmk = new JPasswordField(8);//密码框也设置长度为8
//核心代码第二部分, 把文本框,密码框等加入到JPanel里
JPanel jpwbk = new JPanel();//1 放文本框的JPanel面板
jpwbk.add(wbk);//把文本框放入
jp[0].add(jpwbk);//把JPanl放入网格布局里
JPanel jpbutton0 = new JPanel();//2 放按钮的JPanel面板(按钮也小点好看点)
jpbutton0.add(button[0]);
jp[0].add(jpbutton0);
jp[0].add(biaoqian[2]);
JPanel jpmmk = new JPanel();//3 放密码框的JPanel面板
jpmmk.add(mmk);
jp[0].add(jpmmk);
预览图
代码如下:
package Knight.view;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class login extends JFrame {
JPanel header,container,footer;
JLabel username,password;
JTextField username_text;
JPasswordField password_text;
JButton submit,exit;
JLabel logo = null;
ImageIcon img = null;
public login(){
super();
setSize(467,300);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width / 2 - 233, height / 2 - 150);
setTitle("学生成绩管理系统");
header=new JPanel();
container=new JPanel();
footer=new JPanel();
this.add(header,BorderLayout.NORTH);
this.add(container,BorderLayout.CENTER);
this.add(footer,BorderLayout.SOUTH);
/*----------------顶端图片-----------------------------------*/
img=new ImageIcon("D:\\Workspaces\\CS模式\\studentGrade\\bg_new.jpg");
logo=new JLabel(img);
header.add(logo);
/*---------------输入数据------------------------------------*/
GridLayout gridLayout=new GridLayout(2,4);
container.setLayout(gridLayout);
gridLayout.setHgap(10);
gridLayout.setVgap(10);
username=new JLabel("用户名");
Font f1=new Font("宋体",Font.BOLD,18);
username.setFont(f1);
username.setHorizontalAlignment(SwingConstants.CENTER);
username_text=new JTextField();
password=new JLabel("密 码");
password.setHorizontalAlignment(SwingConstants.CENTER);
password_text=new JPasswordField();
container.add(username);
container.add(username_text);
container.add(password);
container.add(password_text);
/*---------------按钮---------------------------------------*/
FlowLayout flowLayout=new FlowLayout();
footer.setLayout(flowLayout);
submit=new JButton("确定");
exit=new JButton("退出");
footer.add(submit);
footer.add(exit);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new login();
}
}
基本上而言GridLayout,是会忽略组件的尺寸大小,根据容器大小来重新安排组件的尺寸
所以setPreferredSize,setMinimumSize,setMaximumSize在GridLayout里没起不了作用的
解决方式:1.使用绝对布局吧,通过setLocation来定位子组件 2.GridBagLayout 可以处理绝大多数问题,
2017-07-04