1

私のコードでは、私のokButtonは悪いように見えるので、大きくて長いです.どうすればこの問題を解決できますか?

public class d7Table extends JFrame {

public JTable table;
public JButton okButton;

public d7Table() {

        table = new JTable(myTableModel(res));
        okButton = new JButton("Ok");

    add(new JScrollPane(table), BorderLayout.CENTER);
    add(okButton, BorderLayout.PAGE_END);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(800, 600);
    this.setLocation(300, 60);
    this.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new d7Table();
        }
    });
}
}

無関係なコードを削除します。 ここに画像の説明を入力

4

3 に答える 3

5

ボタンを のSOUTH位置に追加しましたBorderLayout。これは のデフォルトの動作ですBorderLayout

それを修正するには、別の を作成しJPanel、それにボタンを追加してから、SOUTH代わりにパネルをその位置に追加します

を見てみましょう

上記のアプローチは、さまざまなレイアウト マネージャーで一連のコンテナーを使用して目的の効果を達成するため、一般に複合レイアウトとして知られています。

JPanel buttonPane = new JPanel(); // FlowLayout by default
JButton okayButton = new JButton("Ok");
buttonPanel.add(okayButton);
add(okayButton, BorderLayout.SOUTH);
于 2013-07-21T21:35:36.850 に答える
4

のデフォルトのレイアウトは でJFrameありBorderLayoutPAGE_END次のようにフレームの下部を水平に意味します。

ここに画像の説明を入力

フレームのレイアウトを変更する必要がありますが、それを行わずに、パネルを作成し、それにコンポーネントを追加してから、パネルをコンテナーに追加します。

JPanel p = new JPanel();
p.add(okButton);
add(p,BorderLayout.PAGE_END);

以下のリンクは、通常使用されるレイアウト マネージャーの詳細を理解するのに役立ちます。

于 2013-07-21T21:35:18.643 に答える
3
import java.awt.*;
import javax.swing.*;

public class TableAndButton extends JFrame {

public JTable table;
public JButton okButton;

public TableAndButton() {
    table = new JTable();
    okButton = new JButton("Ok");

    add(new JScrollPane(table), BorderLayout.CENTER);
    JPanel bottomPanel = new JPanel();
    bottomPanel.add(okButton);
    add(bottomPanel, BorderLayout.PAGE_END);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //this.setSize(800, 600);  better to call pack()
    this.pack();
    //this.setLocation(300, 60);  better to..
    this.setLocationByPlatform(true);
    this.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new TableAndButton();
        }
    });
}
}
于 2013-07-21T21:43:28.897 に答える