📄 jcroppedwindow.java
字号:
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 + -