java的gridlayout布局,发现填入格子的按钮都是整个填充满格子,如何让其中一个格子中的按钮变小,且居中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的gridlayout布局,发现填入格子的按钮都是整个填充满格子,如何让其中一个格子中的按钮变小,且居中相关的知识,希望对你有一定的参考价值。

GridLayout是自动填充的,你可以尝试GridLayout的4个参数的构造方法,会在格子周围填充指定边距,但并不是真正意义上的设置按钮大小。 参考技术A public GridLayout(int rows, int cols, int hGap, int vGap)
该方法根据指定的行数和列数,以及组件的水平和垂直间距构造一个新的GridLayout对象。
参考技术B gridlayout没有这个功能
想实现这个功能可以试试其他的布局管理器
参考技术C 把布局设为null吧。然后所有的组建自己设置大小和位置。本回答被提问者采纳

java 在有GridLayout布局管理器的情况下,怎么设置元件大小

如例子:
//GUI包含三个JScrollBar元件,分别表示低血压、高血压、
//脉搏,当移动JScrollBar键时,改变其值
import javax.swing.JLabel;
import javax.swing.JScrollBar;
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Dimension;

public class MyScrollBar extends JFrame
private JLabel hypertension,hypotension,pulse;
private JLabel hValue,lValue,pValue;
//高血压,低血压,脉搏
private JScrollBar hScrollBar,lScrollBar,pScrollBar;
public MyScrollBar()
Container c=getContentPane();
c.setLayout(new GridLayout(3,3));

hypertension=new JLabel("高血压");
hypotension=new JLabel("低血压");
pulse=new JLabel("脉搏");
hValue=new JLabel("120");
lValue=new JLabel("20");
pValue=new JLabel("65");
hScrollBar=new JScrollBar(JScrollBar.HORIZONTAL,120,2,20,220); //vertical horizontal
lScrollBar=new JScrollBar(JScrollBar.HORIZONTAL); //垂直 水平
pScrollBar=new JScrollBar(JScrollBar.HORIZONTAL);

hScrollBar.setPreferredSize(new Dimension(30,30));//为什么这里没起到效果
lScrollBar.setPreferredSize(null);//为什么这里没起到效果

c.add(hypertension);
c.add(hValue);
c.add(hScrollBar);
c.add(hypotension);
c.add(lValue);
c.add(lScrollBar);
c.add(pulse);
c.add(pValue);
c.add(pScrollBar);
setBounds(100,100,300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

public static void main(String args[])
MyScrollBar app=new MyScrollBar();



因为感觉用GridLayout的时候较多,有网友说GridLayout会强制限制元件大小,所有设置了setPreferredSize,是这样的吗,如何解决这个问题。还是说有没有其他方法,如 在其他管理器下怎么让面板的元件 随自己心意 自由修改,请高手指教下

GridLayout 似乎会忽略组件的大小,然后自己去平均分配每个组件的大小。这种情况一般都是用GridBagLayout 参考技术A 直接用addView(child, width, height).size()来设置就可以了。

因为GridLayout里面的组件是在变化的,所有需要动态设置子组件的Size和它们之间的间距。

还可以这么做:在父类容器中把子类容器的参数通过修改子类容器构造函数的方式传给子类容器,这样就可以在父类容器中直接修改子类容器的属性了。
参考技术B 说实话这个问题我研究很久了,据我所知答案是没有办法的。用了几种方法来改变大小,他就是不搭理,一点用没。本回答被提问者采纳

以上是关于java的gridlayout布局,发现填入格子的按钮都是整个填充满格子,如何让其中一个格子中的按钮变小,且居中的主要内容,如果未能解决你的问题,请参考以下文章

Java AWT 图形界面编程LayoutManager 布局管理器 ④ ( GridLayout 网格布局 | GridBagLayout 网格包布局 )

JAVA中GridLayout的布局问题 如图,如何弄成这样的布局,

三十Java图形化界面设计——布局管理器之GridLayout(网格布局)

谁能解释一下Java中GridBagLayout的使用?

java 在有GridLayout布局管理器的情况下,怎么设置元件大小

十. 图形界面(GUI)设计5.布局设计