java - 滚动条和表格列不可见

标签 java swing

我是 Java 中 GUI 编码的新手(使用 swing),并且我陷入了 JTable 缺少列标题并且表格周围没有滚动条的困境。

其外观图像:http://i.gyazo.com/28a66d42bd9365b2c3c9bfd7c8907cee.png

代码:

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

    table = new JTable();
    table.setFillsViewportHeight(true);
    table.setModel(new DefaultTableModel(new Object[][] {
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null },
            { null, null, null, null, null }, }, new String[] {
            "New column", "New column", "New column", "New column",
            "New column" }));
    scrollPane.setColumnHeaderView(table);

最佳答案

只需将 JTable 添加到 JScrollPane 的视口(viewport)作为其 View 即可。最简单的方法是将表传递到 JScrollPane 的构造函数中:

// create JTable, table, first
JScrollPane scrollPane = new JScrollPane(table);

// now add scrollPane to GUI

或者,您可以按照您执行的顺序创建内容,并将 JTable 显式添加到视口(viewport)作为其 View :

scrollPane.setViewportView(table);

例如:

import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Foo2b extends JPanel {
   private static final String[] COLUMNS = { "Column One", "Column Two",
         "Column Three", "Column Four", "Column Five" };
   private static final int ROW_COUNT = 30;
   private DefaultTableModel tableModel = new DefaultTableModel(COLUMNS, ROW_COUNT);
   private JTable table = new JTable(tableModel);

   public Foo2b() {
      table.setFillsViewportHeight(true);

      setLayout(new BorderLayout());
      JScrollPane scrollPane = new JScrollPane(table);
      scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

      add(scrollPane, BorderLayout.CENTER);
   }

   private static void createAndShowGui() {
      Foo2b mainPanel = new Foo2b();

      JFrame frame = new JFrame("Foo2b");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

关于java - 滚动条和表格列不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433091/

相关文章:

java - 如何填充有关布局管理器的剩余空间?

java - 当我使用选项卡导航到某个字段并输入一些文本时,文本消失了?

java:从jEditorPane获取带有换行符的纯文本

java - 禁用 JButtons 从键盘读取事件

java - JPanel 宽度超过 getPreferredSize() 中定义的尺寸

java - 角色、用户和权限管理工具

Java 2D 游戏 "powered"by repaint();以一种奇怪的方式滞后

java - 如何将数组索引映射到特定日期?

java - 什么是 Java 中的线程组?

java - 近似搜索字符串列表