先不多说,发个代码:
import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JPanel jp = new JPanel();
jf.add(jp);
JButton jb = new JButton();
jb.setSize(300, 200);//这里jb设置了大小
jp.add(jb);
}
}
注意: 这里jb设置了大小,而且设置的好大哦 !!!
但是,却没有改变一丝丝的jb大小,为什么 ?此时,再看一个代码import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JButton jb = new JButton("第二次");
jf.add(jb);
}
}
和上一个代码不一样,我没有在jf(即JFrame)中放入jp(即JPanel),直接把jb(即JButton)放入jf,
我没有设置jb大小,jb却占领了整个屏幕,为什么?问:
两种不同的情况,搞得我好烦,可弄不出个所以然来,求教了,各位!
import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JPanel jp = new JPanel();
jf.add(jp);
JButton jb = new JButton();
jb.setSize(300, 200);//这里jb设置了大小
jp.add(jb);
}
}
注意: 这里jb设置了大小,而且设置的好大哦 !!!
但是,却没有改变一丝丝的jb大小,为什么 ?此时,再看一个代码import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JButton jb = new JButton("第二次");
jf.add(jb);
}
}
和上一个代码不一样,我没有在jf(即JFrame)中放入jp(即JPanel),直接把jb(即JButton)放入jf,
我没有设置jb大小,jb却占领了整个屏幕,为什么?问:
两种不同的情况,搞得我好烦,可弄不出个所以然来,求教了,各位!
布局情况的影响而已,后一种情况JFrame的布局方式貌似默认的方位布局
(东、南、西、北、center)默认是居中的,控件会盛满至于具体什么情况,楼主还是得去了解下Swing的布局
JFrame默认布局为BorderLayout,JPanel默认为FlowLayout .
如果说jf的确是填满的话 ...
jp里面添加jb (即:jp.add(jb) )改变不了jb的大小,我就想不通了,问题在这里 .可否解释下,解我疑惑 ?
【注:上面代码中Coord_And_Size._profun_DefaultCenterAndHalf(jf)是我自定义的,这步代码看官可自行改掉】
之后对jbutton设定大小,并且指定其坐标的位置(相对jpanel)
package com.kiritor;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class MyFrame extends JFrame { private JPanel jPanel ;
private JButton button ;
public MyFrame() {
jPanel = new JPanel();
button = new JButton("按钮");
jPanel.setLayout(null);//要对控件设置大小,父容器布局方式为null
jPanel.add(button);
button.setBounds(60,10,80,40);//button的坐标和大小
this.add(jPanel);
this.setSize(200, 100);
this.setLocationRelativeTo(null);//center
this.setVisible(true);
}
public static void main(String[] args) {
new MyFrame();
}}
呵呵,这样解决倒是不错 。
不过,我还是有两个疑惑:1、为什么在FlowLayout里面没办法setSize() ?
2、由于swing是带有布局管理的Componenet,所以用布局管理器应该比 绝对布局 好点,
那么我非要在JPanel里面设置jb大小而不改变JPanel,有否可行的思路呢?求解惑 ... 提前先谢谢你 ...
2、貌似是有点困难呢
要先将jpanel的布局管理器设置为Null,然后你就可以设置JButton的大小了,可以试试!