2011-08-31 52 views
3

我只是進入GUI編程,慢慢學習。Java GUI編程:設置前臺/後臺

但是我遇到了蝙蝠的問題。我無法在我的窗口中獲取Fore/Background顏色。

但是,當我通過JLabel添加標籤,然後使用setFore/Back時,它們改變顏色就好了。只是不是整個窗口。

我以爲.setForeground和.setBackground應該改變窗口的顏色?

import javax.swing.*; 
import java.awt.*; 

public class MyWindow { 

    public static void main(String args[]) 
    { 
     Runnable init = new Runnable() 
     { 
      public void run() 
      { 

        JFrame myWindow = new JFrame("Hola!"); 
        myWindow.setForeground(Color.YELLOW); 
        myWindow.setBackground(Color.YELLOW); 
        myWindow.setSize(400, 300); 

        myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        myWindow.setLayout(null); 

        myWindow.setVisible(true); 

      } 

     }; 
     SwingUtilities.invokeLater(init); 
    } 


} 

回答

9

首先,不要使用空佈局。讓佈局經理完成工作。其次重要的是,你需要設置內容窗格中JFrame實例的背景下,作爲這樣

myWindow.getContentPane().setBackground(Color.YELLOW); 

參見:

+0

這裏是各種揮杆層的解釋,這可能有助於解釋這種現象:http://download.oracle.com/javase/tutorial/uiswing/組件/ toplevel.html – Sean

+0

對不起,沒有看到編輯時,我張貼 – Sean

3

你不能顏色幀。但是,您可以在內部着色該ContentPane。

import javax.swing.*; 
import java.awt.*; 

    public class MyWindow { 

     public static void main(String args[]) 
     { 
      Runnable init = new Runnable() 
      { 
       public void run() 
       { 

         JFrame myWindow = new JFrame("Hola!"); 

    myWindow.getContentPane().setBackground(Color.YELLOW); 

         myWindow.setSize(400, 300); 

         myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         myWindow.setLayout(null); 

         myWindow.setVisible(true); 

       } 

      }; 
      SwingUtilities.invokeLater(init); 
     } 
    } 

這應該解決您的問題...

+0

是的,現在我明白了。謝謝! –