java - Java背景颜色改变

标签 java swing colors background jframe

我尝试编写有关鼠标监听器的程序。我想做一个程序,如果鼠标光标进入或退出框架,框架的背景颜色会改变。

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);   
   }
}

编译没有问题,如果我运行该程序,它会在 I/O 消息上显示 ENTER、EXIT。然而,问题是颜色没有改变。它只是一个白框。

最佳答案

这里的问题是,显示 JFrame 内容的区域实际上是“内容 Pane ”,而不是 JFrame 本身的内容。

你必须使用

frame.getContentPane().setBackground(Color.BLUE);

关于java - Java背景颜色改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32501911/

相关文章:

java - 如何循环问题直到从扫描仪得到答案?

java - 相同条件连续检查更多次

java - 无法执行 Spring Boot 应用程序

java - 用另一种颜色显示 System.out.println 输出

ios - UILabel 颜色和字体大小从 XIB 更改

java - 以时间间隔更新 JTable 项目

java - JList 获取/删除组件

java - JDatePicker 没有出现在 JFrame 上

java - 显示 JFrame 作为 JButton 单击的结果?

r - 导入 csv 文件时 if (num_colors <256) 出错?