Горизонтальная полоса прокрутки не работает с JTable в Java Swing

у меня естьJTable который я передаю вJScrollPane, Вертикальная полоса прокрутки показывается и работает хорошо, но горизонтальная полоса прокрутки не работает. Код, который я предоставил, скомпилируем, просто укажите свой путь вInputFile1 строка и создайте длинный файл в этом месте.

Я пробовал много решений, но ничего не работает. У меня есть таблица только с одним столбцом, этот столбец содержит строки из документа. Мне нужны как вертикальные, так и горизонтальные полосы прокрутки. Пожалуйста, предложите какое-нибудь решение.

Другие попытки:

Случай 1:

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

Если я устанавливаю это, вертикальная полоса прокрутки не работает.

Вариант 2:

tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

Если я установлю это, ширина столбца станет очень маленькой. Если я попытаюсь увеличить его, то он тоже не будет работать, а показывает только горизонтальную полосу прокрутки, но без области просмотра.

Вы можете раскомментировать и проверить их.

Код:

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          
    }       
}

Ответы на вопрос(1)

Ваш ответ на вопрос