サイズが変更されたときにイベントを送信するメインのがありますが、イベントが発生するまでに、すでにComponentListenerサイズが変更されています。JFrameJpanel
public class Test implements ComponentListener {
private JFrame frame;
private JPanel panel;
public Test() {
frame = new JFrame();
panel = new JPanel();
frame.setPreferredSize(new Dimension(300, 300));
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.addComponentListener(this);
frame.pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
Test test = new Test();
test.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public void componentResized(ComponentEvent e) {
System.out.println(frame.getSize() + " : " + panel.getSize());
frame.revalidate();
}
@Override
public void componentHidden(ComponentEvent e) {}
@Override
public void componentMoved(ComponentEvent e) {}
@Override
public void componentShown(ComponentEvent e) {}
}
JPanel setSizeサイズ変更中にどのように制御しJFrameますか?
編集:BorderLayout境界線を埋めるためのセットコンポーネントを理解しています。コンポーネントのサイズはどのように設定されますか? それは呼んでいsetSizeますか?はいの場合、オーバーライドされた setSize が呼び出されたのはなぜですか?