1

GridLayout を使用している JPanel に JTable を追加していますが、JButton を追加したときと同じ動作が得られません...

GridLayout を使用する JPanel に JButton を追加するときのように、JTable で同じ自動サイズ変更動作を取得する方法を知りたいです。また、テーブルにパネルのスペース全体を使用させたいと考えています。

つづりについて申し訳ありませんが、英語は私の母国語ではありません。皆さんが私を助けてくれることを願っています!

これは私のコードです:

    import javax.swing.*;
    import java.awt.*;

    class Frame extends JFrame {

        private JPanel center;
        private JTable table;

        public Frame(){
            super("Test Jtable");
            this.setLayout(new BorderLayout());        

            this.center = new JPanel(); 
            this.center.setLayout(new GridLayout());

            this.table = new JTable(50,50);
            this.table.setGridColor(Color.black);
            this.table.setCellSelectionEnabled(true);                      

            this.center.add(this.table);
            this.add(this.center,BorderLayout.CENTER);
        }
    }

    public class TestFrame {

        public static void main(String... args) {
            Frame f =new Frame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(400,400);
            f.setVisible(true);
        }
    }
4

1 に答える 1

1

この例に示すように、テーブルをスクロール ペインに追加します。

this.center.add(new JScrollPane(this.table));

pack()補遺: ;を使用して、このようなことを提唱します。他の配置も可能ですが、あまり使い物になりません。そのsetPreferredScrollableViewportSize()方法も参考になるかもしれません。

import javax.swing.*;
import java.awt.*;

class Frame extends JFrame {

    private JPanel center;
    private JTable table;

    public Frame() {
        super("Test Jtable");
        this.setLayout(new BorderLayout());
        this.center = new JPanel();
        this.center.setLayout(new GridLayout());
        this.table = new JTable(50, 10);
        this.table.setGridColor(Color.black);
        this.table.setCellSelectionEnabled(true);
        this.center.add(this.table);
        this.add(new JScrollPane(this.center), BorderLayout.CENTER);
    }
}

public class TestFrame {

    public static void main(String... args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                Frame f = new Frame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.pack();
                f.setVisible(true);
            }
        });
    }
于 2012-04-09T09:12:49.290 に答える