サイズが変更されたときにイベントを送信するメインのがありますが、イベントが発生するまでに、すでにComponentListener
サイズが変更されています。JFrame
Jpanel
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 が呼び出されたのはなぜですか?