【问题标题】:how to put a table and 3 buttons in a JFrame如何在 JFrame 中放置一个表格和 3 个按钮
【发布时间】:2013-03-04 05:15:22
【问题描述】:

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

  1. 一个 JTable
  2. 3 个按钮

为此,我创建了一个 JFrame 并在该 JFrame 中放置了 2 个 JPanel。一个 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);

    }
}

我的main方法中的代码:

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

【问题讨论】:

标签: java swing jpanel layout-manager


【解决方案1】:

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

而不是...

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

试试……

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

旁注

JFrames add 方法自动将调用重定向到contentPane,所以,从技术上讲,您只需要...

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

更新

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

【讨论】:

  • BorderLayout java 文档中解释了“为什么要在 add 方法中提供方向常量?”的原因:为方便起见,BorderLayout 解释了缺席字符串规范的,在add方法中,与常量CENTER相同
  • @HarryJoy +1 好评!
猜你喜欢
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多