Barra de rolagem horizontal não está funcionando com JTable no Java Swing

eu tenho umJTable pelo qual estou passandoJScrollPane. A barra de rolagem vertical está aparecendo e funcionando bem, mas a barra de rolagem horizontal não está funcionando. O código que forneci é compilável, basta colocar seu caminho emInputFile1 string e crie um arquivo longo nesse local.

Eu tentei muitas soluções, mas nada está funcionando. Eu tenho uma tabela com apenas uma coluna, essa coluna contém linhas de um documento. Preciso de barras de rolagem verticais e horizontais. Por favor, sugira alguma solução.

Outras tentativas:

Caso 1:

tab.setPreferredSize(new Dimension(400,400));

Se eu estiver definindo isso, a barra de rolagem vertical não funcionará.

Caso2:

tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

Se eu definir isso, a largura da coluna se tornará muito pequena. Se eu tentar aumentá-lo, ele também não funciona e mostra apenas uma barra de rolagem horizontal, mas sem uma janela de visualização.

Você pode descomentar e verificá-los.

Código:

public class tablecreate extends JFrame implements ActionListener 
{

    JPanel mainPanel;
    tablecreate() throws IOException
    {

        mainPanel=new JPanel();
        String InputFile1 = "/home/user/Desktop/a.txt";
        BufferedReader breader1 = new BufferedReader(new FileReader(InputFile1));
        String line1 = "";
        line1 = breader1.readLine();
        DefaultTableModel model1 = new DefaultTableModel();
        JTable tab=new JTable(model1);
        model1.addColumn("line"); 
        while((line1=breader1.readLine()) != null)
         {
             System.out.println(line1);
             model1.addRow(new Object[]{line1});
         }
         breader1.close();
         tab.setPreferredScrollableViewportSize(new Dimension(1,1));
         tab.setVisible(true);
        //tab.setPreferredSize(new Dimension(400,400));
        // tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

         JScrollPane js = new JScrollPane(tab,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
         js.setPreferredSize(new Dimension(400,400));
         mainPanel.setPreferredSize(new Dimension(500, 500));
         mainPanel.setSize(500,500);
         mainPanel.add(js);
         this.add(mainPanel);
    }

    public static void main(String[] args) throws IOException
    {
        tablecreate tc=new tablecreate();
        tc.setSize(500,500);
        tc.setVisible(true);
        tc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub          
    }       
}

questionAnswers(1)

yourAnswerToTheQuestion