2012-10-24 13 views
9

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

layout idea

:私の希望は、このようなものを持っているのですか? 2つのJPanelを使用したいのですか?

+0

項目を移動するにはどうすればよいですか? –

答えて

11

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

ボタンパネルはBorderLayout.WESTに追加され、ドラッグパネルはBorderLayout.CENTERに追加されます。

スウィングレイアウトマネージャにはVisual Guideがあります。

6

てみJSplitPaneを使用する:ここで

enter image description here

は、コード例です:

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); 
} 
} 

あなたは両方のための除算器の場所をconfugureできsplitPaneH.setOneTouchExpandable真/偽

で遊ぶことができますlike:

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); 
+0

'spane.setDividerLocation((width * 3)/ 4)の' spane'とは何ですか; '???コード全体には存在しません。良い答えbtwの+1。 –

関連する問題