1

こんにちは、私は 4 つのエンティティを 1 つのフレームにレイアウトしたいと考えています。

  1. JTable
  2. 3つのボタン

このために、JFrame を作成し、その JFrame 内に 2 つの JPanel を配置しました。1 つの JPanel には、JTable を保持する scrollablePanel が含まれています。もう 1 つの 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、それへの呼び出しを自動的ににリダイレクトするcontentPaneため、技術的には、必要なのは...

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

更新しました

また、aのデフォルトのレイアウトマネージャーJFrameはですBorderLayout。を呼び出すだけでこれを変更できますが、求めている結果は...FYIJFrame#setLayoutと最もよく一致します。BorderLayout

于 2013-03-04T05:19:33.517 に答える