2017-06-07 112 views
-2
// Creating buttons 
JButton b1 = new JButton(); 
    b1.setText("Add"); 
    b1.setSize(100, 130); 
    b1.setLocation(330, 70); 
    b1.setBackground(Color.red); 
    b1.setVisible(true); 

// Creating second button  
JButton b2 = new JButton(); 
    b2.setText("Add"); 
    b2.setSize(100,100); 
    b2.setLocation(0, 0); 
    b2.setBackground(Color.blue); 
    b2.setVisible(true); 

//adding buttons to Jframe 
f.add(b1); 
f.add(b2); 

,當我運行的程序或有時,它們出現的按鈕不出現,但佔據整個JFrame完全按鈕沒有出現在JFrame的

+1

1)爲了更好地幫助去更快地發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 2)Java GUI必須在不同的語言環境中使用不同的PLAF來處理不同的操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 3)設置BG顏色在某些外觀和感覺上會失敗。解決方案:改爲使用彩色圖標。 4)爲什麼.. –

+0

..做這兩個按鈕有相同的文字? 5)'b2.setVisible(true);'只對像JFrame','JWindow','JDialog'等頂級容器是必需的。 –

回答

2

競猜#1

幾乎一樣關於這個問題的所有問題,您呼叫f.setVisible(true)之前,您添加組件到UI

所以,這樣的事情應該修復它

// In some other part of your code you've not provided us 
//f.setVisible(true); 

JButton b1 = new JButton(); 
b1.setText("Add"); 
b1.setBackground(Color.red); 

JButton b2 = new JButton(); 
b2.setText("Add"); 
b2.setBackground(Color.blue); 

f.add(b1); 
f.add(b2); 
f.setVisible(true); 

競猜#2

你不能改變JFrame的默認佈局管理器,所以它依然使用的是BorderLayout

像這樣的東西應該至少讓互不重疊,

要顯示的兩個按鈕
f.setLayout(new FlowLayout()); 
f.add(b1); 
f.add(b2); 
f.setVisible(true); 

我會建議花一些時間,通過Laying out Components within a Container更多細節

+0

我猜想最後一個,因爲他提到_「按鈕[.. 。]完全佔用整個Jframe「_ – AxelH