【问题标题】:Background color change Java背景颜色更改Java
【发布时间】:2015-12-06 17:49:14
【问题描述】:

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

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 on I/O 消息。然而,问题是颜色没有改变。根本就是白框。

【问题讨论】:

  • 为什么要扩展 JFrame?您的代码创建了一个 JFrame,因此无需扩展 JFrame。

标签: java swing colors background jframe


【解决方案1】:

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

你必须使用

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

【讨论】:

  • 那个绿色复选标记不是回答标记吗?抱歉,我还不知道这个网站。
猜你喜欢
  • 2013-08-08
  • 2020-07-15
  • 1970-01-01
  • 2012-04-21
  • 2017-08-11
  • 2015-10-24
相关资源
最近更新 更多