2016-09-30 4 views
2

Я хочу, чтобы мой JTable находился в центре моего JFrame, и для этой цели я использовал метод setbounds, но ничего не делает, и я не хочу использовать компоновщики. Я просто хочу знать почему он ничего не делает? Вот мой код:Я хочу, чтобы мой JTable в центре

tabel=new JTable(data,columnNames); 
    tabel.setLayout(null); 
    tabel.setPreferredScrollableViewportSize(new Dimension(500,50)); 
    tabel.setFillsViewportHeight(true); 
    JScrollPane pane=new JScrollPane(tabel); 
    pane.setBounds(100,700,200,200); 
    add(pane); 
+0

Возможно, вы захотите использовать GridBagLayout. Вы определенно не должны размещать свои компоненты над нулевым макетом. –

+0

без использования Gridbaglayout я ничего не могу сделать? –

+0

Ваш код не помогает решить проблему вообще. Хорошо, это показывает, что вам не нужны шаблоны и задано значение Макет. – xenteros

ответ

3

Лучше использовать менеджеры компоновки, но если вы настаиваете на том, что вы хотите переместить JTable в JFrame, установив макет на нуль, то вы должны попробовать следующий вариант: (1) Сделать JPanel в JFrame и добавить эту таблицу в JPanel таким образом

JPanel panel=new JPanel(); 
    panel.setBounds(20,300,700,300); 
    add(panel); 
    tabel=new JTable(data,columnNames); 
    tabel.setBounds(100,20,700,400); 
    tabel.setPreferredScrollableViewportSize(new Dimension(500,50)); 
    tabel.setFillsViewportHeight(true); 
    JScrollPane pane=new JScrollPane(tabel); 
    panel.add(pane); 
1

Вы должны добавить все к JPanel, а затем установить расположение JPanel в макет границы. Добавьте таблицу в JPanel, а затем поместите ее в центр. Это самый простой способ сделать это. Макеты могут казаться сложными и неудобными вначале, но как только вы их узнаете, вы быстро поймете, что в миллион раз легче установить границы и нулевые макеты. Вот ссылка, чтобы узнать о приграничном макете: https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

0

Вы добавляете JTable к (компонент верхнего уровня) JFrame .Это может получить ты

JPanel tablePanel = new JPanel(new GridBagLayout()); 
GridBagConstraints layout= new GridBagConstraints(); 
JTable jtable = new JTable(); 
jtable.setPreferredScrollableViewportSize(new Dimension(500,50)); 
jtable.setFillsViewportHeight(true); 
layout.fill = GridBagConstraints.BOTH; 
layout.weightx = 1; 
layout.weighty = 1; 
layout.gridx = 0; 
layout.insets = new Insets(10,10,10,10); 
tablePanel.add(new JScrollPane(jtable), layout) 

Вы можете установить размеры макета и врезки в соответствии к вашей jtable.

Смежные вопросы