0

2 つの jTables (2 つの jScrollPanes に挿入) を持つ jFrame があります。次に、jTable ごとに 3 つの jButton を用意します。次の結果が得られるように配置するにはどうすればよいですか。

ここに画像の説明を入力

それを管理するためにどのレイアウトを使用すればよいかよくわかりません。ありがとう!


私はこれを持っていますが、ボタンが表示されません:

JButton addButton1 = new JButton();           
JButton deleteButton1 = new JButton();
JButton playButton1 = new JButton();
JButton addButton2 = new JButton();           
JButton deleteButton2 = new JButton();
JButton playButton2 = new JButton();


JFrame frame = new JFrame();
frame.setLayout(new GridLayout(1, 2));

JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
panel1.setBorder(javax.swing.BorderFactory.createTitledBorder("List 1"));
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.setBorder(javax.swing.BorderFactory.createTitledBorder("List 2"));    

JPanel panel3 = new JPanel();
panel3.setLayout(new FlowLayout());
panel3.add(addButton1);
panel3.add(deleteButton1);
panel3.add(playButton1);
JPanel panel4 = new JPanel();
panel4.setLayout(new FlowLayout());
panel4.add(addButton2);
panel4.add(deleteButton2);
panel4.add(playButton2);

JScrollPane tableContainer1 = new JScrollPane(table1);
panel1.add(tableContainer1, BorderLayout.CENTER);
JScrollPane tableContainer2 = new JScrollPane(table2);
panel2.add(tableContainer2, BorderLayout.CENTER);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());

frame.getContentPane().add(panel1);
frame.getContentPane().add(panel2);

frame.pack();   
frame.setLocationRelativeTo(null);
frame.setVisible(true);
4

2 に答える 2

4

編集:ガー!誰かが私を打ち負かしました...関係なく、これは少し異なるアプローチです!

方法はいろいろありますが、以下の方法を試してみてください。

  • JFrame>BoxLayoutを使用してX_AXIS
    • JPanel#1 >BorderLayout
      • [ BorderLayout.NORTH]JPanelボタン >FlowLayout使用FlowLayout.LEFT
      • [ BorderLayout.CENTER]JScrollPaneテーブル #1
    • JPanel#2 >BorderLayout
      • [ BorderLayout.NORTH]JPanelボタン >FlowLayout使用FlowLayout.LEFT
      • [ BorderLayout.CENTER]JScrollPane表 #2

BoxLayoutとを使用BorderLayout.CENTERすると、テーブルがフレームに合わせてサイズ変更され、できるだけ多くのスペースが埋まります。簡単な例を次に示します。

public class TwoTableJFrameTest extends JFrame
{
  public TwoTableJFrameTest()
  {
    setTitle("Two Table Layout");
    setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));

    JPanel table1Panel = new JPanel(new BorderLayout(5, 5));

    JPanel table1ButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    table1ButtonPanel.add(new JButton("Button 1"));
    table1ButtonPanel.add(new JButton("Button 2"));
    table1ButtonPanel.add(new JButton("Button 3"));

    JTable table1 = new JTable(new DefaultTableModel(new Object[]{"Column 1", "Column 2"}, 10));

    table1Panel.add(table1ButtonPanel, BorderLayout.NORTH);
    table1Panel.add(new JScrollPane(table1));

    JPanel table2Panel = new JPanel(new BorderLayout(5, 5));

    JPanel table2ButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    table2ButtonPanel.add(new JButton("Button 1"));
    table2ButtonPanel.add(new JButton("Button 2"));
    table2ButtonPanel.add(new JButton("Button 3"));

    JTable table2 = new JTable(new DefaultTableModel(new Object[]{"Column 1", "Column 2"}, 10));

    table2Panel.add(table2ButtonPanel, BorderLayout.NORTH);
    table2Panel.add(new JScrollPane(table2));

    add(table1Panel);
    add(table2Panel);

    pack();
  }
}

2 つのテーブル レイアウト

于 2013-05-22T17:15:48.823 に答える