Java Internal Frame调整事件监听器的大小?

时间:2016-07-12 09:25:51

标签: java jinternalframe

我找不到有关如何捕获resize的“JInternalFrame”事件的任何信息,我的意思是内部框架。

确实,InternalFrameListener没有发现“resize”事件。

我应该自己使用“JInternalFrame.addComponentListener(...)”编写吗?

1 个答案:

答案 0 :(得分: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);
    }
}