位奇怪的,如果看到我做到以下幾點:的Java Swing - 在使用佈局奇怪不同的佈局管理器
import javax.swing.*;
public class FunkyButtonLayout {
public static void main(String[] args) {
JFrame frame = new JFrame("");
JPanel j0 = new JPanel(); // j0 gets added to the root pane
j0.setLayout(null);
JPanel j1 = new JPanel(); // j1 gets added to j0
j1.setLayout(null);
JButton b1 = new JButton(""); // b1 gets added to j1
j1.add(b1);
b1.setBounds(0, 0, 40, 32); // b1 is big
j0.add(j1);
j1.setBounds(0, 0, 32, 32); // j1 is not so big - b1 gets 'trimmed'
frame.getContentPane().setLayout(null); // <- seems to be needed :-(
frame.getContentPane().add(j0);
j0.setBounds(10, 10, 32, 32); // end result: a 32x32 button with
frame.setSize(125, 125); // a trimmed right border
frame.setVisible(true); // in the top-left corner
}
}
我得到差不多就是我要找的,除了在定位J0的能力帶有佈局管理器的根窗格。如果我改變
frame.getContentPane().setLayout(null);
線
frame.getContentPane().setLayout(new java.awt.FlowLayout());
我看到J0畫爲1x1像素@屏幕中間:-(
任何想法,爲什麼?請注意,這ISN」只是一個FlowLayout的東西 - 幾乎所有的佈局管理器弄亂了這一點。
我真的想要「邊界修剪在一邊」按鈕的淨效應 - 它允許我做工具欄按鈕集羣的事情(cage fighter試圖擺脫的東西)與本機外觀按鈕控制 - 我看不到另一種方式做到這一點,感謝OS級皮膚。因此,任何想法讚賞:-)
你達人!那麼,幾乎;-)「按照他們打算使用的方式使用佈局管理器」並不會給我帶來我所需要的破解。 但是,添加\t j0.setPreferredSize(new java.awt.Dimension(32,32));在j0.setBounds行解決問題之後。 謝謝!!!!! – 2009-02-12 01:23:21