Java 使用JScrollPane添加时,JTable不可见

Java 使用JScrollPane添加时,JTable不可见,java,swing,user-interface,jtable,jscrollpane,Java,Swing,User Interface,Jtable,Jscrollpane,我正在处理一个基于gui的项目,我需要在jpanel中添加一个jtable。但我不明白为什么在使用滚动窗格添加时不显示表。另外,在不使用滚动窗格添加时,不显示表头。 谢谢你的帮助。。。 下面是我正在使用的代码 import javax.swing.*; import javax.swing.table.*; import java.sql.*; import java.awt.*; import java.awt.event.*; public class FrmAddEditDN exten

我正在处理一个基于gui的项目,我需要在jpanel中添加一个jtable。但我不明白为什么在使用滚动窗格添加时不显示表。另外,在不使用滚动窗格添加时,不显示表头。 谢谢你的帮助。。。 下面是我正在使用的代码

import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

public class FrmAddEditDN extends JDialog{
    JButton JBUpdate = new JButton(new ImageIcon("images/save.png"));
    JButton JBReset = new JButton("Reset",new ImageIcon("images/reset.png"));
    JButton JBCancel = new JButton("Cancel",new ImageIcon("images/cancel.png"));

    JLabel JLPic1 = new JLabel();
    JLabel JLBanner = new JLabel("Please fill-up all the required fields.");

public FrmAddEditDN(boolean ADD_STATE,JFrame OwnerForm,Connection srcCN,String srcSQL){
        super(OwnerForm,true);
        cnAEDN = srcCN;
        ADDING_STATE = ADD_STATE;
        JPanel JPContainer = new JPanel();
        JPContainer.setLayout(null);
                String[] columnNames = {
                    "Sr No","Invoice No","Invoice Date","Consignee","Description","Basic Amount","Invoice Amount","Payment Received",
                "EFT Date","Payment Earlier Received","Comm. @ %","Comm.Claim @ %","Comm. Received","Date","Bank","Remarks"};
                String[][] data = {
                    {"","","","","","","","","","","","","","","",""}
   };
                DefaultTableModel DTModel = new DefaultTableModel(data,columnNames);
                JTable table = new JTable(5,16);
                table.setBounds(15,295,screen.width-40,150);
                table.setRowHeight(30);
                table.setForeground(Color.black);
                table.setBackground(Color.white);
                JTableHeader header = table.getTableHeader();
                header.setForeground(Color.red);
                header.setBackground(Color.green);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                table.getColumnModel().getColumn(0).setPreferredWidth(2);
                table.getColumnModel().getColumn(1).setPreferredWidth(50);
                JScrollPane tableContainer = new JScrollPane();
                tableContainer.setViewportView(table);

                JPContainer.add(tableContainer);

                getContentPane().add(JPContainer);
        setSize(screen.width-5,screen.height-45);
        setResizable(false);
        setLocation(0,0);
    }
}

您需要在创建组件时传递组件


当未添加到滚动窗格时,还需要手动添加表头。这在
JTable
类javadochten中提到,实际上,使用JScrollPane添加()方法的目的是什么。我尝试对上述情况使用类似scrollPane.add(table),但没有成功。我们什么时候应该对JScrollPane使用add()方法?@amin_uuu?它只是在父类(容器)之后继承的,我想很不幸,它不应该像我们一样在JScrollPane上工作expect@Line那是五年前的事了。让我回忆起来。谢谢你的回答。
JScrollPane scrollPane = new JScrollPane(table);
JPContainer.add(scrollPane);