2016-07-12 21 views
-1

JInternalFrameの "resize"イベントをキャッチする方法に関する情報は見つかりませんでした。実際には、内部のフレームを意味します。Java内部フレームサイズ変更イベントリスナー?

実際、InternalFrameListenerは "resize"イベントを捕捉しません。

"JInternalFrame.addComponentListener(...)"を使用して自分で書く必要がありますか?

答えて

0

はい、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); 
    } 
} 
+0

感謝を例。しかし、私のクラスはすでにjInternalFrameを拡張している別のクラスを拡張して以来、私は別の問題に遭遇しています。 – Titi

+0

@ティティなぜそれは問題ですか? – explv

+0

あなたのヘプルに感謝します。あなたは正しいです...問題ありません。最初に、私はComponentAdapterを拡張する必要があると思っていました(私のクラスはすでにjInternalFrameを継承して以来できませんでした)。ComponentListenerを実装することもできました。 – Titi

関連する問題