幾何学的な幾何学的な拡大の移動やドラッグなどのJava Swingの窓アセンブリ

原理は非常に簡単です、

(絶対レイアウトを使用して)1つのクリアレイアウト

2リスナーを追加します(リスナーウィンドウをドラッグします)

リスナー内の位置の動的調整アセンブリ3

結果は以下の通りであります:

ドラッグ効果の後:

コードの実装:

輸入java.awt.EventQueue。
輸入java.awt.event.ComponentAdapter。
輸入java.awt.event.ComponentEvent。

輸入javax.swing.JFrame;
輸入javax.swing.JLabel。
輸入javax.swing.JButtonの。
輸入javax.swing.JTextField。


パブリック クラスのテスト{ 

    プライベートJFrameのフレーム。
    プライベートJTextFieldのテキストフィールド。

    公共の 静的な 無効メイン(文字列[] args)を{ 
        EventQueue.invokeLater(新しいRunnableを(){
             公共 ボイドラン(){
                 してみてください {
                    テストウインドウ = 新しいテスト(); 
                    window.frame.setVisible(真の); 
                } キャッチ(例外e){ 
                    e.printStackTrace(); 
                } 
            } 
        })。
    } 

    パブリックテスト(){ 
        )(初期化; 
    } 

    プライベート ボイド初期化(){ 
        フレーム = 新しいJFrameの()。
        frame.setBounds( 100、100、450、300 )。
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。
        frame.getContentPane()setLayoutの(NULL); //清空布局
        
        JLabelのラベル = 新しい JLabelの( "标签" ); 
        label.setBounds( 81、63、61、16 )。
        。frame.getContentPane()(ラベル)を追加します。
        
        JButtonのボタン = 新しい JButtonの( "按钮" ); 
        button.setBounds( 252、58、117、29 )。
        。frame.getContentPane()(ボタン)を追加します。
        
        テキストフィールド = 新しいJTextFieldの(); 
        textField.setText( "文本框" ); 
        textField.setBounds( 81、110、288、26 )。
        frame.getContentPane()(テキストフィールド)を追加します。; 
        TextField.setColumns( 10 ); 
        
        frame.addComponentListener(新新 ComponentAdapter(){ // ドラッグされたウィンドウリスナー
            公共 のボイドcomponentResized(ComponentEvent E){  
                 int型 whidth frame.getWidth =(); // 取得窓幅
                int型の高さ=フレーム.getHeight(); // もし中心の高さを設定することができ、ウィンドウの高さ取得
                 // ウィンドウ1/3の左側にlable 
                label.setBounds(whidth / 3、63は、61である、16); // (出発点x点y、高いH、幅W)タグ明らか幅と高さを設定開始
                 //を1/2にウィンドウの左側にlable 
                16)、さbutton.setBounds(whidth / 2、63であり、61; //(X点、始点Y、高いH、幅wを開始する)
                 // ウィンドウの幅は常に1/2 
                textField.setBounds(81、110、whidth / 2、26れている); // (点xを開始、出発点Y、幅W、高H)
            }   

        }); 
        
    } 

}

 

おすすめ

転載: www.cnblogs.com/easyidea/p/11026032.html