はい、addComponentListener()
を使用して、JInternalFrame
にサイズ変更リスナーを追加する必要があります。
これを行うには、最もコンパクトな方法はComponentAdapter
を使用してのみcomponentResized(final ComponentEvent e)
方法オーバーライドするために、次のようになります。
jInternalFrame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(final ComponentEvent e) {
super.componentResized(e);
System.out.println("Resizing");
}
});
はこの単純な、完全な例を見てみましょう:ため
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class Example {
public static void main(String[] args) {
SwingUtilities.invokeLater(Example::createFrame);
}
private static void createFrame() {
JFrame jFrame = new JFrame();
jFrame.setLocationRelativeTo(null);
JDesktopPane jDesktopPane = new JDesktopPane();
jDesktopPane.setPreferredSize(new Dimension(600, 600));
JInternalFrame jInternalFrame = new JInternalFrame();
jInternalFrame.setBackground(Color.BLUE);
jInternalFrame.setResizable(true);
jInternalFrame.setSize(new Dimension(300, 300));
jInternalFrame.setLocation(100, 100);
jInternalFrame.setVisible(true);
jInternalFrame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(final ComponentEvent e) {
super.componentResized(e);
System.out.println("Resizing");
}
});
jDesktopPane.add(jInternalFrame);
jFrame.setContentPane(jDesktopPane);
jFrame.pack();
jFrame.setVisible(true);
}
}
感謝を例。しかし、私のクラスはすでにjInternalFrameを拡張している別のクラスを拡張して以来、私は別の問題に遭遇しています。 – Titi
@ティティなぜそれは問題ですか? – explv
あなたのヘプルに感謝します。あなたは正しいです...問題ありません。最初に、私はComponentAdapterを拡張する必要があると思っていました(私のクラスはすでにjInternalFrameを継承して以来できませんでした)。ComponentListenerを実装することもできました。 – Titi