如何在JFrame中放置一个表和3个按钮

时间:2013-03-04 05:15:22

标签: java swing jpanel layout-manager

朋友们,我想在一个框架中布置4个实体

  1. 一个JTable
  2. 3个按钮
  3. 为此,我创建了一个JFrame并在该JFrame中放置了2个JPanel。一个JPanel包含一个包含JTable的scrollablePanel。另一个JPanel包含3个JButtons。

    我预计输出如下:

    enter image description here

    但我的桌子不再可见,只有按钮可见。 以下是我的代码

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class displayGui extends JFrame{
        private JPanel topPanel;
        private JPanel btnPanel;
        private JScrollPane scrollPane;
    
        public displayGui(JTable tbl){
            setTitle("Company Record Application");
            setSize(300,200);
            setBackground(Color.gray);
    
    
            topPanel = new JPanel();
            btnPanel = new JPanel();
    
            topPanel.setLayout(new BorderLayout());
            getContentPane().add(topPanel);
            getContentPane().add(btnPanel);
            scrollPane = new JScrollPane(tbl);
            topPanel.add(scrollPane,BorderLayout.CENTER);
            JButton addButton = new JButton("ADD");
            JButton delButton = new JButton("DELETE");
            JButton saveButton = new JButton("SAVE");
    
            btnPanel.add(addButton);
            btnPanel.add(delButton);
    
        }
    }
    

    我的主要方法中的代码:

    displayGui dg = new displayGui(table);
    dg.setVisible(true);
    

1 个答案:

答案 0 :(得分:4)

您需要为框架上的每个面板指定一个位置...

而不是......

getContentPane().add(topPanel);
getContentPane().add(btnPanel);

...试

getContentPane().add(topPanel, BorderLayout.CENTER);
getContentPane().add(btnPanel, BorderLayout.SOUTH);

旁注

JFrame的添加方法会自动将对contentPane的调用重定向到add(topPanel, BorderLayout.CENTER); add(btnPanel, BorderLayout.SOUTH); ,因此,从技术上讲,您只需要执行... {/ p>

JFrame

<强>更新

我还应该指出BorderLayout的默认布局管理器是JFrame#setLayout。您只需拨打BorderLayout即可更改此设置,但您所获得的结果最符合{{1}} ... FYI