import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Clock extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L ;
JFrame frame ;
Insets inset ;
public Clock (int size)
{
panelSet(size) ;
frameSet(size) ;
}
public void panelSet (int size)
{
this.setSize(new Dimension(size,size)) ;
this.addComponentListener(new ComponentAdapter()
{
public void componentResized (ComponentEvent e)
{
System.out.println("面板的高度为"+Clock.this.getWidth()) ;
System.out.println("面板的高度为"+Clock.this.getHeight()) ;
}
});
}
public void frameSet (int size)
{
frame = new JFrame () ;
inset = frame.getInsets() ;
frame.setSize(new Dimension(size+inset.left+inset.right,size+inset.top+inset.bottom)) ;
System.out.println(inset.top+" "+inset.bottom+" "+inset.left+" "+inset.right) ;
frame.setVisible(true) ;
frame.addComponentListener(new ComponentAdapter()
{
public void componentResized (ComponentEvent e)
{
System.out.println("窗口的宽度为"+frame.getWidth()) ;
System.out.println("窗口的高度为"+frame.getHeight()) ;
inset = frame.getInsets() ;
System.out.println(inset.top+" "+inset.bottom+" "+inset.left+" "+inset.right) ;
}
});
frame.add(this) ;
}
public static void main (String [] args)
{
new Clock(400) ;
}
}
设置窗口(jframe)的宽度的时候,我想把窗口的insets加上去,这样就能面板(jpanel)就不用被窗口的insets占据了空间。比如说窗口的大小应该为(416,439)面板大小才能为(400,400)。但是很奇怪的时候,设置窗口大小加上insets的值的时候上下左右的值都为0,而后来又添加了监听器,改变大小的时候,上右下左的又是都是有大小的,这是为什么呢?