代码改变世界

java Jbutton常用操作

2012-05-05 23:54  youxin  阅读(15089)  评论(0编辑  收藏  举报

  首先看下设置大小。

  一般用setBounds函数,setSize只能设置大小,setBounds可以设置位置。当容器的布局管理器为null时setSize和setBounds才能起作用,

JPanel p = new JPanel();
JFrame f = new JFrame();
JButton b = new JButton();

f.add(p);
p.add(b);

//b.setBounds(2,2,33,33);//设置Button的位置、大小
f.setBounds(0,0,600,600); //设置Frame的位置、大小

如果不设置Button的位置、大小,程序只显示了一点点大的按钮。但是设置之后,程序还是这样显示,
而且无论设置的参数怎样,显示的结果都一样,这是为什么呢?是因为没有加布局管理器吗?

不是没有布局管理器
你包含按钮的是一个 JPanel 而他默认是使用流式布局 流式布局是使用的是内部组件的preferredSize作为显示的大小此 你的 setBounds调用是没有效果的

解决方法无非两种
1. 不用流式布局
在添加按钮以前调用p.setLayout(null); 然后调用 b.setBounds(10,10,33,33);就会产生效果

2.用流式布局
这样就要设置preferredSize
用b.setPreferredSize(new java.awt.Dimension(33,33));即可

 

  使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法再这种情况下设置组件的大小和位置,如果试图用java提供的setLocation setSize(),setBounds(等方法,则都会被布局管理器所覆盖。

    如果用户确实需要亲自设置大小和位置,则应取消该容器的布局管理器。
setLayout(null);

 

import java.applet.Applet;
import java.awt.*;
public class btnLay extends Applet 
{ 
  Button btn; 
  public void init()
  {
   /*
    * 600 Applet的宽
    * 400 Applet的高
    */
  this.resize(600, 400);
  
  /*
   * 下面这个代码千万不能少
   */
  setLayout(null); //applet默认是FlowLayout
  btn=new Button("Name");
  
  /*
   * 100 左定点坐标
   * 150  左上定点坐标
   * 50 Button的宽
   * 25 Button的高
   */
   
  btn.setBounds(100,150, 50, 25);
  add(btn); 
  }
}

   转:在JFrame中我们经常要对Jbutten做一些特殊的设置,下面的方法是我的一些收集和总结吧 
          1、    对JButton大小的设置 
             
                      button.setPreferredSize(new Dimension(30,30)); 
                     //(30,30)  是你要设置按钮的大小 
          2、    对JButton透明的设置 
                   ——按钮设置为透明,这样就不会挡着后面的背景 
    button.setContentAreaFilled(false); 
         3、    对JButton去掉按钮的边框的设置 
                  ——如果有时候你的按钮不需要边框因为边框影响美观或者是因为你需要的是点击之前按钮呈现 普通图标形式,点击之后才有各种效果的话就可以用这种方法去掉边框 
    button.setBorderPainted(false); 
          4、    对JButton添加图标呢的设置 
               ——  // 实例化一个图标对象 
            ImageIcon image = new ImageIcon(icons[i]); 
             // 实例化按钮对象,并且设置按钮上显示图片 
             JButton button = new JButton(image); 
               ——或者 
                    button.setIcon(new ImageIcon(getClass().getResource("qq.png"))); 
                    //qq.png是你要添加的图片 
          5 、  让按钮随按钮上的图案变化 
                  butten.setMargin(new Insets(0,0,0,0)); 
          6、  设置凸起来的按钮,很多其他的swing也可用此方法 
           butten.setBorder(BorderFactory.createRaisedBevelBorder()); 
          7、   设置凹起来的按钮,很多其他的swing也可用此方法 
                  button.setBorder(BorderFactory.createLoweredBevelBorder());  
          8、   设置按钮的前景色和背景色 
                button .setFont(new  java.awt.Font("华文行楷",  1,  15)); 

button.setBackground(Color.green); 
          9、  改变按钮的样式 
                             UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
             这个方法的改变我是不怎么能看出差别,呵呵、、当然还有很多样式 
             查出来替换就行了