Горизонтальная полоса прокрутки не работает с 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
}
}