朋友们,我想在一个框架中布置4个实体
为此,我创建了一个JFrame并在该JFrame中放置了2个JPanel。一个JPanel包含一个包含JTable的scrollablePanel。另一个JPanel包含3个JButtons。
我预计输出如下:
但我的桌子不再可见,只有按钮可见。 以下是我的代码
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);
答案 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