java中的JTextField在GridLayout中怎么设置大小?

import java.awt.*;import javax.swing.*;public class L5_13_L5_14用户登录界面 extends JFrame{ JLabel[] biaoqian = new JLabel[10]; JPanel[] jp = new JPanel[10]; JButton[] button = new JButton[10]; JCheckBox[] fxk = new JCheckBox[10]; JTextField wbk; JPasswordField mmk; public static void main(String[] args){ L5_13_L5_14用户登录界面 l = new L5_13_L5_14用户登录界面(); } L5_13_L5_14用户登录界面() { biaoqian[0] = new JLabel(new ImageIcon("image/qqq.png")); biaoqian[0].setPreferredSize(new Dimension(0, 50));//这个是设置高度的大小的。 jp[0] = new JPanel(new GridLayout(3, 3)); jp[1] = new JPanel(); biaoqian[1] = new JLabel("用户名", JLabel.CENTER); biaoqian[2] = new JLabel("密 码", JLabel.CENTER); wbk = new JTextField(10); mmk = new JPasswordField(); button[0] = new JButton(new ImageIcon("image/baidu.png")); button[0] = new JButton("按钮"); biaoqian[3] = new JLabel("忘记密码"); biaoqian[3].setFont(new Font("宋体", Font.PLAIN, 16)); biaoqian[3].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); fxk[0] = new JCheckBox("隐身登录"); fxk[1] = new JCheckBox("记住梦想"); biaoqian[4] = new JLabel("<html><a href = 'www.qq.com'>申请密码保护</a>"); biaoqian[4].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); button[1] = new JButton("登录"); button[2] = new JButton("取消"); button[3] = new JButton("向导"); jp[0].add(biaoqian[1]); jp[0].add(wbk); jp[0].add(button[0]); jp[0].add(biaoqian[2]); jp[0].add(mmk); jp[0].add(biaoqian[3]); jp[0].add(fxk[0]); jp[0].add(fxk[1]); jp[0].add(biaoqian[4]); jp[1].add(button[1]); jp[1].add(button[2]); jp[1].add(button[3]); jp[1].setPreferredSize(new Dimension(0, 50)); this.add(biaoqian[0], BorderLayout.NORTH); this.add(jp[0]); this.add(jp[1], BorderLayout.SOUTH); this.setSize(320, 255); this.setLocation(800, 400); //this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }这个是代码,刚才发的图片是运行图,我想问问大神们怎么把文本框(输入账号和密码的)变得矮一点,我上网搜了好多方法都不管用,可能是不适合我的这种情况。我的文本框是放在GridLayout里的。GrilLayout的格式为GridLayout(3 , 3);我知道可以用GridLayout(3, 3, 15, 15);来调整各个组件之间的间距。但是我想实现的是单独的把JTextField文本框变小。大神们看看能不能帮我解决一下。谢谢了!

把文本框和密码框,在放入一个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);

预览图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-10

代码如下:

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();

}

}

第2个回答  2017-07-04
jp[0] = new JPanel(new GridLayout(4, 3)); 改成4行3列

基本上而言GridLayout,是会忽略组件的尺寸大小,根据容器大小来重新安排组件的尺寸
所以setPreferredSize,setMinimumSize,setMaximumSize在GridLayout里没起不了作用的
解决方式:1.使用绝对布局吧,通过setLocation来定位子组件 2.GridBagLayout 可以处理绝大多数问题,
第3个回答  2017-07-04
zhuce.setFont(newFont("宋体",Font.BOLD,
第4个回答  2017-07-05
setPreferredSize(new Dimension(80, 35));