2011-08-31 54 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

是的,现在我明白了。谢谢! –