1

私は英語がかなり苦手なので、文法的な間違いを許してください。私はJavaスイングが初めてです。私の意図は、多くのjinternalframesを動的に作成することであり、各jintenalframeは移動可能です。つまり、自由にドラッグしてどこにでも保持できます。これは、コンポーネントムーバークラスを通じて実現しました。今私が直面している問題は、これらの内部フレームのサイズを変更できないことです。これらの jinternalFrames のサイズを変更するたびに、同じサイズに戻ります。コードの下のコンポーネントリスナーを使用して、サイズ変更イベントに登録しました。

this.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent ce)
    {
      setDinamicSize(ce)
    }
}); 

private void setDinamicSize(ComponentEvent ce)
{
    JInternalFrame tempFrame = (JInternalFrame)ce.getSource();
    tempFrame.setSize(new Dimension(tempFrame.getAlignmentX(),tempFrame.getAlignmenty()));
}

私を助けてください。前もって感謝します

4

1 に答える 1

4

JDesktopPaneJInternalFrameは、配置や (内部フレームを正しく作成した場合) サイズ変更などを処理する s のコンテナーです...

ここに画像の説明を入力

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestDesktopPane {

    public static void main(String[] args) {
        new TestDesktopPane();
    }

    public TestDesktopPane() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JDesktopPane pane = new JDesktopPane();
                JInternalFrame inFrame = new JInternalFrame("No Hands", true, true, true, true);
                inFrame.setBounds(10, 10, 100, 100);
                inFrame.setVisible(true);
                pane.add(inFrame);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(pane);
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}

詳細については、内部フレームの使用方法を確認してください。

于 2013-09-19T07:35:17.237 に答える