Java JTable标头未显示静止

Java JTable标头未显示静止,java,swing,user-interface,jtable,Java,Swing,User Interface,Jtable,我查看了一下,发现很多人并没有把他们的桌子放进滚动窗格中。即使我将表格嵌套到滚动窗格中,然后再嵌套到框架中,它仍然无法显示标题。我还缺什么吗?谢谢 public class Gui extends JFrame { AbstractTableModel model; JTable table; public void start(AbstractTableModel model) { this.model = model; table=new JTable(model

我查看了一下,发现很多人并没有把他们的桌子放进滚动窗格中。即使我将表格嵌套到滚动窗格中,然后再嵌套到框架中,它仍然无法显示标题。我还缺什么吗?谢谢

public class Gui extends JFrame {

AbstractTableModel model;
JTable table; 



public void start(AbstractTableModel model) { 
    this.model = model;
    table=new JTable(model){
        @Override 
        public boolean isCellEditable(int arg0, int arg1) { 
            return false; 
        }

    }; 


    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    TableColumn column = null;
        for (int i = 0; i < model.getColumnCount(); i++) {
            column = table.getColumnModel().getColumn(i);
            column.setPreferredWidth(120);
            column.setMaxWidth(300);
            column.setMinWidth(50);
        }    

        JScrollPane pane = new JScrollPane(table);  
        pane.setPreferredSize(new Dimension(900,900));

        add(pane); 
        setLayout(new FlowLayout()); 
        setVisible(true); 
        setDefaultCloseOperation(EXIT_ON_CLOSE); 
        pack();
}
公共类Gui扩展JFrame{
抽象表模型;
JTable表;
公共void开始(AbstractTableModel模型){
this.model=模型;
表=新JTable(型号){
@凌驾
公共布尔值isCellEditable(int arg0,int arg1){
返回false;
}
}; 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumn=null;
对于(int i=0;i
基于您的代码,然后必须添加缺少的功能,您的代码可以正常工作

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Gui extends JFrame {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                Gui frame = new Gui();
                frame.start(new DefaultTableModel(new Object[]{"A", "B", "C"}, 10));
            }
        });
    }

    AbstractTableModel model;
    JTable table;

    public void start(AbstractTableModel model) {
        this.model = model;
        table = new JTable(model) {
            @Override
            public boolean isCellEditable(int arg0, int arg1) {
                return false;
            }

        };

        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        TableColumn column = null;
        for (int i = 0; i < model.getColumnCount(); i++) {
            column = table.getColumnModel().getColumn(i);
            column.setPreferredWidth(120);
            column.setMaxWidth(300);
            column.setMinWidth(50);
        }

        JScrollPane pane = new JScrollPane(table);
        pane.setPreferredSize(new Dimension(900, 900));

        add(pane);
        setLayout(new FlowLayout());
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();

    }
}


为了更快地获得更好的帮助,请发布一个(最少完整且可验证的示例)。不要将布局设置为FlowLayout。使用容器将JScrollPane放入BorderLayout。@HoverCraftFullOfels仍然存在相同的问题。我创建了一个带有BorderLayout的JPanel,然后将该窗格添加到其中。但标题未显示问题在于代码未显示。它在这里工作正常。我同意@AndrewThompson的观点——您需要显示真正的可编译runnable code,a为我们重现了您的问题。嘿,我让它工作了。问题是我混淆了标题之间的关系。因为数据实际上有多个标题,因此我将标题视为行。因此,从技术上讲,不意味着顶部有任何列标题,而只是a、B、C…有点像excel sheet.table.setPreferredScrollableViewportSize(table.getPreferredSize());
setLayout(new FlowLayout()); // But I'd use a `BorderLayout`
add(pane);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);