Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable自动调整大小至JScrollPane高度和宽度_Java_Swing_Jtable_Jscrollpane - Fatal编程技术网

Java JTable自动调整大小至JScrollPane高度和宽度

Java JTable自动调整大小至JScrollPane高度和宽度,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,我一直在网上阅读,试图找到解决我问题的办法。 有人能帮我吗。当滚动条显示的行不足时,如何自动调整Jtable的高度以适应父容器。谢谢 更新:代码显示了我的问题,以及建议的解决方案如何没有帮助。谢谢 import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder;

我一直在网上阅读,试图找到解决我问题的办法。 有人能帮我吗。当滚动条显示的行不足时,如何自动调整Jtable的高度以适应父容器。谢谢

更新:代码显示了我的问题,以及建议的解决方案如何没有帮助。谢谢

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class t extends JFrame {

    private JPanel contentPane;
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    t frame = new t();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public t() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));

        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);

        table = new JTable(10,10);
        table. setFillsViewportHeight( true );
        scrollPane.setViewportView(table);
    }

}
当滚动条显示的行不足时,如何自动调整Jtable的高度以适应父容器

我认为您正在寻找:

table. setFillsViewportHeight( true );
编辑:

但似乎不起作用

将以下代码行添加到示例中:

contentPane.setBackground(Color.RED);
scrollPane.getViewport().setBackground(Color.BLUE);
你会看到一个红色的边框

然后删除:

table. setFillsViewportHeight( true );
您将看到红色和蓝色,表示桌子高度最初增加了

如果您希望看到空单元格被绘制,那么它将不起作用。表格只能绘制模型中的内容。如果希望绘制更多的数据行,则需要向模型中添加更多的数据行。如果高度降低,则需要从模型中删除数据


当然,现在您需要跟踪哪些是“有效”数据行,哪些是“填充”数据行。因此,您需要创建一个自定义的TableModel来管理它。然后将ComponentListener添加到表中,以处理表中的高度更改,然后对TableModel进行操作。

发布帮助。“当滚动条显示的行数不足时,如何自动调整Jtable的高度以适应父容器。”这对(用户)来说没有意义因此是不可取的。@AndrewThompson不明白这是为什么。我的Jtable在JScrollPane/JPanel/BorderLayout.CENTER中。。。。当我将我的应用程序调整为全屏时,我的JTable下会有一个空白,这很难看(对用户来说)对不起,但似乎不起作用…将发布更新以显示它不起作用。谢谢