2013-06-05 4 views
0

У меня есть JTable, который хорошо отображается. Если я поместил таблицу в JScrollPane, она больше не отображается. Почему нет? Я хотел бы добавить обе таблицы в собственную JScrollPane. Здесь мой код, в котором я только пытаюсь добавить JScrollPane в первую таблицу:JTable не отображается после добавления в JScrollPane?

private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 1000, 800); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JProgressBar progressBar = new JProgressBar(); 
    progressBar.setBounds(50, 68, 700, 14); 
    frame.getContentPane().add(progressBar); 

    JTextPane txtpnAutomotiveHmi = new JTextPane(); 
    txtpnAutomotiveHmi.setText("Automotive HMI"); 
    txtpnAutomotiveHmi.setBounds(362, 21, 205, 20); 
    frame.getContentPane().add(txtpnAutomotiveHmi); 


    testcase_table = new JTable(); 
    testcase_table.setBounds(50, 125, 350, 426); 
    JScrollPane scroll_testcase = new JScrollPane(testcase_table); 
    frame.getContentPane().add(scroll_testcase); 

    teststep_table = new JTable(); 
    teststep_table.setBounds(399, 125, 350, 426); 
    frame.getContentPane().add(teststep_table); 
} 

Спасибо.

+0

Первая ошибка, которую вы произвели, - это: frame.getContentPane(). SetLayout (null); 'После этого все вызовы' setBounds' являются дополнительными. Вместо этого используйте соответствующий «LayoutManager», и все ваши проблемы будут решены. –

+0

Почему вы хотите добавить 'teststep_table' прямо в свою область содержимого вместо' JScrollPane'? – Aeronth

ответ

1

Не устанавливайте нулевой макет. Это не «макет по умолчанию» и не является «самым простым в реализации». На самом деле очень сложно получить право.

JFrame использует BorderLayout по умолчанию. Add JProgressBar с BorderLayout.NORTH, JTextPane с BorderLayout.SOUTH и JScrollPane с BorderLayout.CENTER. Удалить все setBounds. Появятся компоненты. Если вам нужно разместить их сложным способом, прочитайте около GridBagLayout.

+0

В то время как 'GridBagLayout' может многое сделать, многим людям трудно пользоваться. Вместо этого я бы рассмотрел использование вложенных панелей, которые также могут легко создавать сложные макеты. Но хороший общий совет по использованию 'LayoutManager' –

+0

Вложенные панели также отличные – h22

0

Определите размер стола и задайте одинаковый размер для панели прокрутки.

scrollPane.setSize(table.getSize()); 
Смежные вопросы