11

ユーザーがボタンをクリックして何かをに配置し、JPanelこのアイテムを移動できるようにするプログラムを作成しようとしています。移動するコンポーネントを許可するために使用するのに適したレイアウトをすでに見つけました(このリンクを参照)。しかし、私はこのようなレイアウトを作成するための最良の方法に興味がありますか?私の望みはこのようなものを持つことです:

レイアウトのアイデア

どうすればこれを達成できますか?2つJPanelまたは他のものを使用しますか?

4

2 に答える 2

12

メインパネル(またはウィンドウコンテンツペイン)にはBorderLayout、レイアウトマネージャーとしてが必要です。

次に、ボタンパネルをに追加しBorderLayout.WEST、パネルをにドラッグしBorderLayout.CENTERます。

スイングレイアウトマネージャーのビジュアルガイドがあります。

于 2012-10-24T21:20:19.830 に答える
7

使用してみてくださいJSplitPane

ここに画像の説明を入力してください

コード例は次のとおりです。

class SplitPane extends JFrame {

private     JSplitPane  splitPaneV;
private     JSplitPane  splitPaneH;
private     JPanel      panel1;
private     JPanel      panel2;
private     JPanel      panel3;


public SplitPane(){
    setTitle( "Split Pane Application" );
    setBackground( Color.gray );

    JPanel topPanel = new JPanel();
    topPanel.setLayout( new BorderLayout() );
    getContentPane().add( topPanel );

    // Create the panels
    createPanel1();
    createPanel2();
    createPanel3();

    // Create a splitter pane
    splitPaneV = new JSplitPane( JSplitPane.VERTICAL_SPLIT );
    topPanel.add( splitPaneV, BorderLayout.CENTER );

    splitPaneH = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT );
    splitPaneH.setLeftComponent( panel1 );
    splitPaneH.setRightComponent( panel2 );

    splitPaneV.setLeftComponent( splitPaneH );
    splitPaneV.setRightComponent( panel3 );
}

public void createPanel1(){
    panel1 = new JPanel();
    panel1.setLayout( new BorderLayout() );

    // Add some buttons
    panel1.add( new JButton( "North" ), BorderLayout.NORTH );
    panel1.add( new JButton( "South" ), BorderLayout.SOUTH );
    panel1.add( new JButton( "East" ), BorderLayout.EAST );
    panel1.add( new JButton( "West" ), BorderLayout.WEST );
    panel1.add( new JButton( "Center" ), BorderLayout.CENTER );

}

public void createPanel2(){
    panel2 = new JPanel();
    panel2.setLayout( new FlowLayout() );

    panel2.add( new JButton( "Button 1" ) );
    panel2.add( new JButton( "Button 2" ) );
    panel2.add( new JButton( "Button 3" ) );
}

public void createPanel3(){
    panel3 = new JPanel();
    panel3.setLayout( new BorderLayout() );
    panel3.setPreferredSize( new Dimension( 400, 100 ) );
    panel3.setMinimumSize( new Dimension( 100, 50 ) );

    panel3.add( new JLabel( "Notes:" ), BorderLayout.NORTH );
    panel3.add( new JTextArea(), BorderLayout.CENTER );
}

public static void main( String args[] ){
    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Exception evt) {}
    // Create an instance of the test application
    SplitPane mainFrame = new SplitPane();
    mainFrame.pack();
    mainFrame.setVisible( true );
}
}

splitPaneH.setOneTouchExpandableあなたは真/偽で遊ぶことができ ます

次のように、両方の仕切りの場所を設定できます。

Toolkit tk = Toolkit.getDefaultToolkit();
    Dimension d = tk.getScreenSize();
    int width = d.width;
    int height = d.height;

    spane.setDividerLocation((width*3)/4);
    spanex.setDividerLocation(width/4); 
于 2012-10-24T21:29:46.600 に答える