ユーザーがボタンをクリックして何かをに配置し、JPanel
このアイテムを移動できるようにするプログラムを作成しようとしています。移動するコンポーネントを許可するために使用するのに適したレイアウトをすでに見つけました(このリンクを参照)。しかし、私はこのようなレイアウトを作成するための最良の方法に興味がありますか?私の望みはこのようなものを持つことです:
どうすればこれを達成できますか?2つJPanel
または他のものを使用しますか?
ユーザーがボタンをクリックして何かをに配置し、JPanel
このアイテムを移動できるようにするプログラムを作成しようとしています。移動するコンポーネントを許可するために使用するのに適したレイアウトをすでに見つけました(このリンクを参照)。しかし、私はこのようなレイアウトを作成するための最良の方法に興味がありますか?私の望みはこのようなものを持つことです:
どうすればこれを達成できますか?2つJPanel
または他のものを使用しますか?
メインパネル(またはウィンドウコンテンツペイン)にはBorderLayout
、レイアウトマネージャーとしてが必要です。
次に、ボタンパネルをに追加しBorderLayout.WEST
、パネルをにドラッグしBorderLayout.CENTER
ます。
スイングレイアウトマネージャーのビジュアルガイドがあります。
使用してみてください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);