Я прочитал несколько вопросов, в которых говорилось, что GBL лучше, чем обычный GridLayout для позиционирования компонентов.GridBagLayout: настройка положения компонентов
Ссылки: first, second, Oracle Tutorial
Ну так что я пытался добавить некоторые компоненты (кнопки) на мой GBL, но это как-то всегда центры мои компоненты. Единственный способ разделить 2 кнопки - разместить «Макеты» в моем проекте, который выглядит ужасно.
public class GridGUI extends JPanel {
private JButton button;
public GridGUI() {
setLayout(new GridBagLayout());
GridBagConstraints comps = makeGbc(0,1);
JPanel panel = new JPanel();
button = new JButton("Datei speichern");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
});
panel.add(button);
add(panel,comps);
comps = makeGbc(1,1);
button = new JButton("Datei laden");
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(new JPanel());
panel.add(button);
add(panel,comps);
}
private GridBagConstraints makeGbc(int x, int y) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.gridx = x;
gbc.gridy = y;
gbc.weightx = x;
gbc.weighty = 1.0;
gbc.insets = new Insets(5, 5, 5, 5);
gbc.anchor = (x == 0) ? GridBagConstraints.LINE_START : GridBagConstraints.LINE_END;
gbc.fill = GridBagConstraints.HORIZONTAL;
return gbc;
}
public static void showGUI() {
JFrame frame = new JFrame("Pop-Art-Collage");
frame.getContentPane().add(new GridGUI());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(800, 800);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
showGUI();
}
});
}
}
Но я хочу, чтобы они появились в верхней части графического интерфейса пользователя, а не в центре.
Также я попытался изменить размер кнопок с помощью button.setSize(x,y)
, но они всегда оставались неизменными.
Заранее спасибо
Edit:
Хорошо теперь я попробовал решение, которое я получил, но я попал в некоторых других проблем.
GridBagConstraints comps = makeGbc(0,1,20,50,0,0);
button = new JButton("Datei speichern");
button.setPreferredSize(new Dimension(200,25));
add(button,comps);
JButton button2 = new JButton("Datei laden");
button2.setPreferredSize(new Dimension(100,25));
comps = makeGbc(1,1,20,150,0,100);
add(button2,comps);
Вот моя проблема, что я установил размер для предпочтительного обоего кнопок же, но он все еще не показывает правильно для второй. (4 чисел после й, у makeGbc являются значения вставок сверху, слева, снизу, справа)
(1+), 'Единственный способ разделить 2 кнопки - это поместить Макеты в мой проект, который выглядит ужасно. Вы используете« вставки », которые управляют пространством между двумя компонентами, поэтому меняйте вставки. – camickr
@AndrewThompson благодарит вас за ваш комментарий, я уже отредактировал свой ответ! Я, очевидно, не знал этого. –
, но каким образом мне нужно работать с вставками? Что они должны делать? Если я изменю Вставку, например, (100,0,0,0), он ничего не меняет – NhatNienne