1

嗨朋友我想在一帧中布局 4 个实体

  1. 一个 JTable
  2. 3 个按钮

为此,我创建了一个 JFrame 并将 2 个 JPanel 放入该 JFrame 中。一个 JPanel 包含一个包含 JTable 的 scrollablePanel。另一个 JPanel 包含 3 个 JButton。

我希望输出如下所示:

在此处输入图像描述

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

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

1 回答 1

4

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

代替...

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

尝试...

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

边注

s add 方法会自动将对它的JFrame调用重定向到 s contentPane,因此,从技术上讲,您只需要...

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

更新

我还应该指出 a 的默认布局管理器JFrameBorderLayout. 您可以通过简单地调用来更改它JFrame#setLayout,但您所追求的结果最好与BorderLayout...FYI会面

于 2013-03-04T05:19:33.517 回答