【问题标题】:JTable without a header没有标题的 JTable
【发布时间】:2011-02-01 11:41:27
【问题描述】:

谁能告诉我如何创建一个没有表头的表?

我正在制作数独游戏,我想在 Java 中创建一个没有表头的表。有可能吗?

【问题讨论】:

  • 不要添加列名......使用任何其他构造函数......还是默认?我希望你在谈论 JTable..
  • @saurabh:这里不欢迎 3133t 发言。我修复了你的帖子,但下次不要使用“any1”、“plz thx”和几个“??”。我可以吃芝士汉堡吗?
  • 什么表?它也需要椅子吗?大声笑
  • @SyntaxT3rr0r 虽然是 3133t 名称 ;)

标签: java swing jtable


【解决方案1】:

我不认为您希望您的数独滚动,所以最简单的方法应该是将您的表格放入负责显示标题的JScrollPane: p>


另一种方式是调用

table.setTableHeader(null);

【讨论】:

  • 对我来说,这两种解决方案都对标题没有任何影响。我什至尝试过table.getTableHeader.setVisible(false),但标题所在的位置仍然有一个空白的灰色点。我知道这是一个旧帖子; API 是否发生了变化,还是我遗漏了什么?
  • 看起来你遗漏了一些东西,我只是尝试了两种建议的方法,它们都有效。将 TableHeader 设置为不可见确实会留下一个灰色点,因为布局不会改变。如果您无法解决,请随时通过简短的示例提出另一个问题,以重现您的问题和结果的屏幕截图。
【解决方案2】:

如果对建议的方法有疑问,请尝试以下方法:

jTable.getTableHeader().setUI(null);

这是用 Java 8 测试的。

【讨论】:

    【解决方案3】:

    所以诀窍似乎是首先使用 DefaultTableModel 构造函数设置标题,然后再调用 setTableHeader(null);

    这是一些演示代码:

    package net.raysforge.visual.demo;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    public class JTableAndGBC {
    
        private String[] columnNames = {"Source", "Hit", "Last", "Ur_Diff"};
        private JTable table;
        private Object[][] data = {{"Swing Timer", 2.99, 5, 1.01},
            {"Swing Worker", 7.10, 5, 1.010}, {"TableModelListener", 25.05, 5, 1.01}};
        private DefaultTableModel model = new DefaultTableModel(data, columnNames);
    
        public JTableAndGBC() {
            JPanel panel = new JPanel(new GridBagLayout());
            table = new JTable(model);
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.weightx = 1.0;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            JScrollPane pane = new JScrollPane(table);
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            table.setTableHeader(null);
            panel.add(pane, gbc);
            JFrame frame = new JFrame();
            frame.add(panel, BorderLayout.CENTER);
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String args[]) throws Exception {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new JTableAndGBC();
                }
            });
        }
    }
    

    【讨论】:

      【解决方案4】:

      像我这样的傻瓜:这样做:]

      jTable.setTableHeader(null);
      

      【讨论】:

        【解决方案5】:

        Try These Steps:

        JtableProperties > TableHeader > CustomCode > Null

        【讨论】:

          【解决方案6】:

          jTable.getTableHeader().setUI(null) 在(如果)L&F 改变后将不起作用。

          对我有用的是重置以这种方式包装 JTable 的滚动窗格的列标题的可见性(在我的情况下分配给变量 scrollPaneSummary):

          scrollPaneSummary = new javax.swing.JScrollPane();
          scrollPaneSummary.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_NEVER);
          scrollPaneSummary.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
          scrollPaneSummary.setViewportView(  summaryJtable  );
          scrollPaneSummary.setColumnHeaderView( summaryJtable.getTableHeader());
          
          // make JTable headers invisible
          scrollPaneSummary.getColumnHeader().setVisible(false);
          scrollPaneSummary.revalidate();
          
          
            
          

          【讨论】:

            猜你喜欢
            • 2019-07-15
            • 2012-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-24
            • 2022-01-03
            • 2021-07-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多