首先看下設置大小。
一般用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");
這個方法的改變我是不怎么能看出差別,呵呵、、當然還有很多樣式
查出來替換就行了