首页 > 解决方案 > 为 Jtable 数据显示 JScrollpane 水平滚动条

问题描述

我有一张有 5 列的表格,我的最后一列是老师的工作日。

用户使用复选框选择教师工作的日期,当用户按下添加按钮时,该行将添加到 Jtable 中。

我的宽度有限,想使用 Jscrollpane 的水平滚动条来显示完整的数据

由于某种原因,当添加新行并超过我为 JTable 分配的大小时,会出现垂直滚动条,但水平滚动条不会出现这种情况。

我正在添加一张图片:

在此处输入图像描述

如您所见,我有一个垂直滚动条,但在第 15 行,日子被切断了,我希望它有一个水平滚动条,这样我就可以看到完整的数据

    scrollPane = new JScrollPane();
    scrollPane.setBorder(new EmptyBorder(0, 0, 0, 0));
    scrollPane.setOpaque(false);
    scrollPane.setBounds(10, 11, 508, 241);
    teacherPanel.add(scrollPane);

    String[] columnNames = { "ID", "Name", "Course", "Max Hours", "Days" };
    teacherTableModel = new DefaultTableModel();
    teacherTableModel.setColumnIdentifiers(columnNames);

    teacherTable = new JTable(teacherTableModel) {
        public boolean isCellEditable(int data, int columns) {
            return false;
        }
    };
    teacherTable.setFillsViewportHeight(true);
    teacherTable.setOpaque(false);
    teacherTable.setGridColor(new Color(0, 0, 0));
    teacherTable.setFont(new Font("Tahoma", Font.BOLD, 12));
    teacherTable.setBackground(new Color(204, 204, 204));
    teacherTable.setFocusable(false);
    teacherTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    teacherTable.getTableHeader().setResizingAllowed(false);
    teacherTable.getTableHeader().setReorderingAllowed(false);
    teacherTable.getTableHeader().setOpaque(false);
    teacherTable.getTableHeader().setFont(new Font("Tahoma", Font.BOLD, 12));
    teacherTable.getTableHeader().setBackground(new Color(71, 71, 71));
    teacherTable.getTableHeader().setForeground(new Color(204, 204, 204));

    DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
    centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);

    for (int i = 0; i < 5; i++) {
        teacherTable.getColumnModel().getColumn(i).setCellRenderer(centerRenderer);
    }
    teacherTable.getColumnModel().getColumn(0).setMaxWidth(25);
    teacherTable.getColumnModel().getColumn(1).setMinWidth(150);
    teacherTable.getColumnModel().getColumn(3).setMaxWidth(75);
    teacherTable.getColumnModel().getColumn(4).setMinWidth(200);

    scrollPane.setViewportView(teacherTable);
    scrollPane.getViewport().setBackground(new Color(62, 62, 62));

    teacherTableRow = new Object[5];

标签: javaswingjtablejscrollpane

解决方案


推荐阅读