Я реализован JPanel
использование GridBagLayout
следующим образом:GridBag не отображает все компоненты в строке
fileSelectionDetails = new JPanel();
fileSelectionGridBagLayout = new GridBagLayout();
fileSelectionDetails.setLayout(fileSelectionGridBagLayout);
JLabel lblFile1 = new JLabel("File 1:");
JTextField txtFile1Path = new JTextField();
JButton btnBrowseFile1 = new JButton("Browse...");
addComponentToFileSelectionGrid(lblFile1, 0, 0, 1, 1, 20, 100, GridBagConstraints.NONE, GridBagConstraints.WEST);
addComponentToFileSelectionGrid(txtFile1Path, 1, 0, 3, 1, 60, 100, GridBagConstraints.HORIZONTAL, GridBagConstraints.WEST);
addComponentToFileSelectionGrid(btnBrowseFile1, 2, 0, 1, 1, 20, 100, GridBagConstraints.HORIZONTAL, GridBagConstraints.WEST);
private void addComponentToFileSelectionGrid(Component component, int gridX, int gridY,
int gridWidth, int gridHeight, int weightX,
int weightY, int fill, int anchor) {
GridBagConstraints constraint = new GridBagConstraints();
constraint.gridx = gridX;
constraint.gridy = gridY;
constraint.gridwidth = gridWidth;
constraint.gridheight = gridHeight;
constraint.weightx = weightX;
constraint.weighty = weightY;
constraint.fill = fill;
constraint.anchor = anchor;
fileSelectionGridBagLayout.setConstraints(component, constraint);
fileSelectionDetails.add(component);
}
Я хочу, чтобы мои компоненты раскладываются следующим образом:
Однако , что я на самом деле вижу:
т. Е. Отсутствует кнопка «Обзор ...»! Почему это?
Кто знает. Возможно, кадр недостаточно велик, чтобы отображать все компоненты. Отправьте правильный [mcve], который демонстрирует проблему. – camickr
Просто понял, что это связано с тем, что свойство 'gridx' ограничения моей кнопки равно 2, но текстовое поле охватывает 3 ячейки сетки, закрывая кнопку. – petehallw
Интересно, я не думал, что значение 'gridWidth' имело значение, когда у вас был только один ряд компонентов. Чтобы увеличить текстовое поле, просто используйте: 'new JTextField (20)' при создании текстового поля. Он рассчитает размер для хранения 20 символов «W». – camickr