JTable изменяет положение других компонентов в BoxLayout

Моя проблема в том, что когда я добавляю JTable на панель, все остальные компоненты перемещаются вправо примерно на 20% длины панели, код следующий:

JFrame frame = new JFrame("my frame");

JPanel panel = new JPanel();
BoxLayout layout = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
panel.setLayout(layout);

JButton but1 = new JButton("button1");
but1.setAligmentX(0);
panel.add(but1);

String[] columnNames = {"kolumna 1", "kol 2", "kol3"};
JTable itemTable = new JTable(new DefaultTableModel(columnNames, 10));
panel.add(new JScrollPane(itemTable));

JButton but2 = new JButton("button2");
but2.setAligmentX(0);
panel.add(but2);

frame.setContentPane(panel);
frame.setVisible(true);

и результат

    button1
TABLEEEEEEE
TABLEEEEEEE
TABLEEEEEEE
TABLEEEEEEE
    button2

вместо того

button1
TABLEEEEEE
TABLEEEEEE
TABLEEEEEE
TABLEEEEEE
button2

Что я делаю неправильно?

/редактировать

Я проверил, что JTextArea в порядке, но JScrollPane и JTable вызывают эту проблему, использовала кнопку с методом .setAligment (0), но тот же результат


person Naix    schedule 02.12.2014    source источник
comment
Чтобы получить более качественную помощь, опубликуйте MCVE (минимальный полный проверяемый пример) или SSCCE (короткий, автономный, правильный пример).   -  person Andrew Thompson    schedule 02.12.2014


Ответы (1)


попробуйте этот код

    JButton b1 = new JButton("button1");
    String[] columnNames = { "kolumna 1", "kol 2", "kol3" };
    JTable itemTable = new JTable(new DefaultTableModel(columnNames, 10));
    JScrollPane scrollPane = new JScrollPane(itemTable);

    JButton b2 = new JButton("button2");

    b1.setAlignmentX(Component.LEFT_ALIGNMENT);
    scrollPane.setAlignmentX(Component.LEFT_ALIGNMENT);
    b2.setAlignmentX(Component.LEFT_ALIGNMENT);

    JPanel panel = new JPanel();
    BoxLayout layout = new BoxLayout(panel, BoxLayout.Y_AXIS);
    panel.setLayout(layout);

    panel.add(b1);
    panel.add(scrollPane);
    panel.add(b2);

Здесь есть дополнительная информация: выравнивание панели java BoxLayout

person nader.h    schedule 02.12.2014
comment
Большое спасибо, scrollPane.setAligmentX (0) работал, вы можете объяснить мне, что произошло? - person Naix; 02.12.2014
comment
вам нужно установить выравнивание JScrollPane, а не Jtable :) - person nader.h; 02.12.2014