2015-09-10 309 views
0

我試圖編寫關於mouselistener的程序。我想製作程序,如果鼠標光標進入或退出框架,框架的背景顏色會發生變化。背景顏色變化Java

import java.awt.event.MouseListener; 
import java.awt.event.MouseEvent; 
import java.awt.Color; 
import javax.swing.JFrame; 
import java.awt.event.ActionListener; 

public class EnterExitListener extends JFrame 
{ 
    public static void main(String [] args) 
    { 
     JFrame frame=new JFrame(); 
     final int FRAME_WIDTH=500; 
     final int FRAME_HEIGHT=600; 
     frame.setSize(FRAME_WIDTH,FRAME_HEIGHT); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

     class MouseEnterExitListener implements MouseListener 
     { 
     public void mouseEntered(MouseEvent event) 
     { 
     System.out.println("ENTER"); 
     frame.setBackground(Color.BLUE); 
     } 
     public void mouseExited(MouseEvent event) 
     { 
     System.out.println("EXIT"); 
     frame.setBackground(Color.RED); 
     } 
     public void mouseReleased(MouseEvent event) {} 
     public void mouseClicked(MouseEvent event) {} 
     public void mousePressed(MouseEvent event) {} 
     } 

     MouseListener listener = new MouseEnterExitListener(); 
     frame.addMouseListener(listener); 
    } 
} 

編譯沒有問題,如果我運行程序,它顯示ENTER,EXIT在I/O消息。但問題是顏色不變。它根本就是白色的框架。

+0

爲什麼要擴展JFrame?你的代碼創建一個JFrame,所以不需要擴展JFrame。 – camickr

回答

2

這裏的問題是顯示JFrame內容的區域實際上是「內容窗格」,而不是JFrame本身的內容。

,你將不得不使用

frame.getContentPane()的setBackground(Color.BLUE)。

+0

如果你認爲它的解決你可以標記它的答案.. –

+0

是不是綠色複選標記回答標記?對不起,我還不知道這個網站。 – Konorika