Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 滚动条和表格列不可见_Java_Swing - Fatal编程技术网

Java 滚动条和表格列不可见

Java 滚动条和表格列不可见,java,swing,Java,Swing,我不熟悉Java中的GUI编码(使用swing),我被困在一个点上,JTable缺少它的列标题,并且表周围没有滚动条 其外观的图像: 代码: 只需将JTable作为视图添加到JScrollPane的视口中即可。通过将表传递到JScrollPane的构造函数中,这是最容易做到的: // create JTable, table, first JScrollPane scrollPane = new JScrollPane(table); // now add scrollPane to GUI

我不熟悉Java中的GUI编码(使用swing),我被困在一个点上,JTable缺少它的列标题,并且表周围没有滚动条

其外观的图像:

代码:


只需将JTable作为视图添加到JScrollPane的视口中即可。通过将表传递到JScrollPane的构造函数中,这是最容易做到的:

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

// now add scrollPane to GUI
或者,您可以按照创建顺序创建对象,并将JTable显式添加到视口中作为其视图:

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();
         }
      });
   }
}

第二个解决方案非常有效!另外,感谢您的示例:)
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();
         }
      });
   }
}