⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcroppedwindow.java

📁 Vyger offers a D & D and Rogue-like environment in a graphical online roleplay game.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

                    newH += iniY-e.getY();
                    updatedSize=true;
                  }
                  else if(resizingFromBottom) {
                    newH += -iniY+e.getY();
                    updatedSize=true;
                  }
   
                  if(resizingFromLeft) {
                    newX += e.getX()-iniX;
                    updatedLocation=true;

                    newW += iniX-e.getX();
                    updatedSize=true;
                  }
                  else if(resizingFromRight) {
                    newW += -iniX+e.getX();
                    updatedSize=true;
                  }
                }

                if(newH<middleBar.getHeight(null))
                   newH = middleBar.getHeight(null);

                if(newW<leftBar.getWidth(null)+rightBar.getWidth(null))
                   newW = leftBar.getWidth(null)+rightBar.getWidth(null);

                if(updatedLocation && updatedSize) {
                    JCroppedWindow.this.setSize( new Dimension( newW, newH ) );
                    userContentPane.setPreferredSize( new Dimension( newW, newH-middleBar.getHeight(null) ) );
                    JCroppedWindow.this.setSize( new Dimension( newW, newH ) );
                    JCroppedWindow.this.pack();
                    JCroppedWindow.this.setLocation(newX, newY);
                }
                else if(updatedSize) {
                    userContentPane.setPreferredSize( new Dimension( newW, newH-middleBar.getHeight(null) ) );
                    JCroppedWindow.this.setSize( new Dimension( newW, newH ) );
                    JCroppedWindow.this.pack();
                }
                else if( updatedLocation ) {
                    JCroppedWindow.this.setLocation(newX, newY);
                    JCroppedWindow.this.pack();
                }
                else if(userMouseListener!=null)
                        userMouseListener.mouseReleased(e);

                updatedLocation=false;
                updatedSize=false;
            	leftButtonPressed = false;
                movingWindow = false;
                resizingFromTop = false;
                resizingFromBottom = false;
                resizingFromLeft = false;
                resizingFromRight = false;
            }
        });


     // Our Mouse Motion Adapter
        super.addMouseMotionListener( new MouseMotionAdapter() {

            public void mouseDragged(MouseEvent e) {

                if(!resizingFromTop && !resizingFromBottom && !resizingFromLeft && !resizingFromRight)
                   JCroppedWindow.this.setLocation( JCroppedWindow.this.getX()+e.getX()-iniX,
                                                    JCroppedWindow.this.getY()+e.getY()-iniY );

                if(userMouseMotionListener!=null)
                   userMouseMotionListener.mouseDragged(e);
            }

            public void mouseMoved(MouseEvent e) {
                 if(userMouseMotionListener!=null)
                    userMouseMotionListener.mouseMoved(e);
            }

        });


     // Default components
        super.setContentPane( new JPanel( true ) );
     
        super.getContentPane().setLayout( new BorderLayout() );

        super.getContentPane().add( new JBarPanel(), BorderLayout.NORTH );
        
        userContentPane = new JPanel(true);
        userContentPane.setLayout( new BorderLayout() );
        super.getContentPane().add( userContentPane, BorderLayout.CENTER );
   }

 /*------------------------------------------------------------------------------------*/

   /** To get the JWindow's Content Pane
    */
    public Container getContentPane() {
   	return (Container) userContentPane;
    }

 /*------------------------------------------------------------------------------------*/

   /** To set the JWindow's Content Pane. Only JPanel are accpeted.
    */
    public void setContentPane( Container contentPane ) {
        if(contentPane instanceof JPanel)
           userContentPane = (JPanel) contentPane;
    }

 /*------------------------------------------------------------------------------------*/

   /** To add a MouseListener to this JWindow.
    */
   public void addMouseListener(MouseListener l) {
        userMouseListener = l;
   }

 /*------------------------------------------------------------------------------------*/

   /** To add a MouseMotionListener to this JWindow.
    */
   public void addMouseMotionListener(MouseMotionListener l) {
        userMouseMotionListener = l;
   }

 /*------------------------------------------------------------------------------------*/

  /** Our JBarPanel.
   */
   public class JBarPanel extends JPanel {

              public JBarPanel() {
              	super(true);
                this.setOpaque(false);
                this.setBackground( Color.white );
                setMinimumSize( new Dimension( 0, 0 ) );
                setPreferredSize( new Dimension( 100, 0 ) );
                setMaximumSize( new Dimension( 3000, 0 ) );
              }

              public void setMaximumSize(Dimension maximumSize) {
              	  maximumSize.height = middleBar.getHeight(null);
              	  super.setMaximumSize( maximumSize );
              }

              public void setPreferredSize(Dimension preferredSize) {
              	  preferredSize.height = middleBar.getHeight(null);
              	  
              	  if(preferredSize.width<leftBar.getWidth(null)+rightBar.getWidth(null))
              	     preferredSize.width=leftBar.getWidth(null)+rightBar.getWidth(null);

              	  super.setPreferredSize( preferredSize );
              }

              public void setMinimumSize(Dimension minimumSize) {
              	  minimumSize.height = middleBar.getHeight(null);
              	  
              	  if(minimumSize.width<leftBar.getWidth(null)+rightBar.getWidth(null))
              	     minimumSize.width=leftBar.getWidth(null)+rightBar.getWidth(null);

              	  super.setMinimumSize( minimumSize );
              }

              public void paint( Graphics g ) {
                 super.paint( g );

              // 1 - Left & middle bar images
                 g.drawImage( leftBar, 0, 0, this );

                 for( int i=leftBar.getWidth(null); i<=this.getWidth()-rightBar.getWidth(null);
                          i+=middleBar.getWidth(null) )
                      g.drawImage( middleBar, i, 0, this );

              // 2 - Title
                 Graphics2D g2D = (Graphics2D) g;
                 RenderingHints saveRenderHints = g2D.getRenderingHints(); // save
    
                 RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                                                        RenderingHints.VALUE_ANTIALIAS_ON);
                 renderHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    
                 g2D.setRenderingHints( renderHints );
                 
                 if(JCroppedWindow.this.useDarkMenuBar)
                    g2D.setColor( new Color(160,146,130) );
                 else
                    g2D.setColor( Color.black );

                 g2D.setFont( titleFont );
                 g2D.drawString( title, leftBar.getWidth(null)+2, 11 );
                 g2D.setRenderingHints( saveRenderHints ); // restore

              // 4 - Right Bar image
                 g.drawImage( rightBar, this.getWidth()-rightBar.getWidth(null), 0, this );
            }
    }

 /*------------------------------------------------------------------------------------*/

   /** To tell if this window is resizable.
    *  @param resizable set to true if you want to be able to resize this window (default).
    */
    public void setResizable( boolean resizable ) {
    	this.resizable = resizable;
    }

 /*------------------------------------------------------------------------------------*/

}

⌨️ 快捷键说明

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