complistenerdemo.java

来自「《java事件处理指南》一书的代码,好东西」· Java 代码 · 共 84 行

JAVA
84
字号
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class CompListenerDemo extends JFrame {   private JLabel label;   public CompListenerDemo()   {/*  A very long label is created and placed on a JFrame  */      label = new JLabel("This is a very, very long label");      label.setFont(new Font("Serif", Font.BOLD, 14));      label.setForeground(Color.black);      JPanel panel = new JPanel();      panel.add(label);      getContentPane().add(panel);/*  The JFrame registers a ComponentListener    */      addComponentListener(new CompListener());      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      setBounds(100, 100, 300, 200);      setVisible(true);   }/*  The ComponentListener is implemented as an inner class.  When     *//*  the JFrame is resized, a ComponentEvent is generated and sent     *//*  to the componentResized() method.  This method tests to see       *//*  if the JFrame width is smaller than the JLabel width.  If it      *//*  is, the JFrame is resized so it is wider than the JLabel.         *//*  If the JFrame is moved, a ComponentEvent is sent to the           *//*  componentMoved() method.  The method determines if the frame      *//*  has been moved off of the screen. If it has, the method moves     *//*  the frame back on to the screen. The componentHidden() and        *//*  componentShown() methods are not used, so they are implemented    *//*  as stub methods.                                                  */   class CompListener implements ComponentListener   {      public void componentResized(ComponentEvent event)      {         Component comp = event.getComponent();          if ( comp.getWidth() < label.getWidth() )         {            comp.setSize( label.getWidth()+100, comp.getHeight() );         }             }      public void componentMoved(ComponentEvent event)      {         Dimension screenSize =                  Toolkit.getDefaultToolkit().getScreenSize();         Component comp = event.getComponent();          if ( comp.getX() < 0 )         {            setLocation(10, comp.getY()+30);         }         if ( comp.getX() > screenSize.width - getWidth() )         {            setLocation(screenSize.width-getWidth()-30, comp.getY()+30);         }         if ( comp.getY() < 0 )         {            setLocation(comp.getX(), 30);         }         if ( comp.getY() > screenSize.height - getHeight() )         {            setLocation(comp.getX(), screenSize.height-getHeight()-30);         }      }      public void componentHidden(ComponentEvent event){}      public void componentShown(ComponentEvent event){}   }   public static void main(String args[])   {      CompListenerDemo demo = new CompListenerDemo();   }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?