1

我正在将 JTable 添加到使用 GridLayout 的 JPanel 中,但我没有得到与添加 JButton 时相同的行为......

我想知道如何使用 JTable 获得相同的自动调整大小行为,例如将 JButton 添加到使用 GridLayout 的 JPanel 中,并且我希望表格使用面板的整个空间。

对不起拼写,英语不是我的母语。希望你们能帮助我!

这是我的代码:

    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 回答