java gridlayout 如何实现30行2列如图示的排列?

如图,我的要求其实很简单: 采用java gridlayout 30行2列,左边列是JLabel,右边是编辑框 JTextfield。我要求左边的JLabel 为输入框名称,宽度小一些,其显示的文本靠近输入框,右边的JTExtfield 宽度大一些,而实际程序总是给我显示左右两边一样宽,对半的,Jlabel显示的文本离输入框很遥远,看起来很不舒服,为何这么简单的要求,能不能实现呢?如何实现?多谢了!

第1个回答  推荐于2017-10-03
GridLayout是这样的,都是平均分配的。根据楼主的需求,我提供两种思路:
其一:使用JSplitPane分割,以下代码:
private void init{} {
//左侧布局
JPanel left = new JPanel() ;
left.setLayout(new GridLayout(30,1,1,1));
for(int i=0;i<30;i++) {
//添加JLabel
}
//右侧布局
JPanel right = new JPanel() ;
right.setLayout(new GridLayout(30,1,1,1));
for(int i=0;i<30;i++) {
//添加JTextField
}
//整体布局
JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,left,right);//使用JSplitPane
jsp.setDividerLocation(100);
this.add(jsp) ;

this.setLocation(100, 100);
this.setSize(400, 800);
this.setVisible(true);
}
注意:jsp.setDividerLocation(100);方法是设置分隔栏的位置;其中数字要配合this.setSize(400, 800);使用,长400,分隔栏100,也就是大约左侧占四分之一,右侧占四分之三。这种方法比较灵活。

其二:使用BorderLayout布局器,代码就不写了,太麻烦
就是把左边的JLabel布局好以后放在WEST中,右侧的JTextField布局好后放在CENTER中。本回答被网友采纳
第2个回答  2013-01-12
貌似这个组件没办法设置不同宽带的列!你可以用 JTable这个组件!

JAVA中GridLayout的布局问题 如图,如何弄成这样的布局,
public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame1().setVisible(true);} });} \/\/ Variables declaration - do not modify private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private jav...

关于java中GridLayout布局的一个小问题,肯定大家帮忙解释,谢谢..._百 ...
if (nrows > 0)ncols = (ncomponents + nrows - 1) \/ nrows;nrows就是你设定的行数,ncomponents是你添加的组件数目,这儿就是16,ncols就是列数。使用(4,3)和(4,5)时,列数 = (16 + 4 -1)/4 = 4 使用(3,4)时,列数 = (16 + 3 -1)/3 = 6 明白了么...

java中grid布局中的 列 不起作用啊??
p1.setLayout(new GridLayout(3,3,3,3));改成 new GridLayout(1,2,3,3)就行了。

一个Java界面排序 大家帮忙看看
class Window extends Frame \/\/implements ActionListener { TextArea text; Panel panel_1,panel_2,panel_3,panel_4; TextField shuming;Button btn1,btn2; Label lab1,lab2;Window(){ super("图书管理系统");setLayout(new GridLayout(3,1)); \/\/在这里给窗口设置布局为3行1列 setBounds(...

java窗口设计中, 如何设置多行输入框
\/\/设置布局方式, 网格布局 3行2列 c.setLayout(new GridLayout(3, 2));jtf = new JTextField();jpf = new JPasswordField();JButton b = new JButton("显示");\/\/ 添加按钮监听 b.addActionListener(this);jl = new JLabel();c.add(new JLabel("用户名:"));c.add(jtf);c.add(...

Java中JTble表格中的数据如何逐行显示?
不过JTable的setValueAt方法应该就可以实现。楼主可以定义个一个线程类来完成。比如你需要插入100行数据,可以在线程的run方法中写一个循环,在循环中写两行代码,一行是setValueAt,一行是刷新JTable,然后再让线程睡眠,这样一行一行的显示的效果就可以出来了!或者楼主可以用进度条来打发等待的时间,就像...

android LinearLayout 里面的东西怎么换行?
最后自能自己去看看那种能够换行的线性布局了,线性布局比较不好的是不能自动换行,也就是当设置LinearLayout的orentation 设置为vertical 为竖直方向也就是只有一列,每行只能显示一个View或者View的子类,当设置LinearLayout的orentitation为Horizontal,LinearLayout的只能显示为一行,横向显示,当屏幕满了的...

java的gridlayout布局,发现填入格子的按钮都是整个填充满格子,如何让...
GridLayout是自动填充的,你可以尝试GridLayout的4个参数的构造方法,会在格子周围填充指定边距,但并不是真正意义上的设置按钮大小。

关于java的布局管理器问题,我想实现往一个JPanel面板里面添加控件,其实...
FlowLayout 貌似可以从垂直方向布局 GridBagLayout 网格布局管理器,可自适应 BoxLayout 水平或垂直依次排列 后面两个都可以满足你的要求

JAVA中“p.setLayout(new GridLayout(1, 2));”是什么意思?
p.setLayout(参数)此方法表示设置窗口布局,其中的“参数”是窗口布局的样式,new GridLayout(1, 2)为网格布局样式。其中的参数“1”“2”分别为网格的“行数”和“列数”。p.setLayout(new GridLayout(1, 2));此句话的整体意思是将窗口布局设置为网格式布局,网格的行数和列数分别是1和2....

相似回答