Изменения положения компоновки Java-компонентов после восстановления свернутого окна

Для тех, кто не использует Windows, файл для изменения - netbeans-8.0/etc/netbeans.conf

, а строка (строки) для изменения:

netbeans_jdkhome="/usr/lib/jvm/java-8-oracle"

комментирует старое значение и вставляет новое значение

-1
задан Andrew Thompson 4 March 2019 в 21:49
поделиться

2 ответа

Используйте GridLayout на imgPanel и добавьте метки с помощью петли. Обязательно центрируйте текст метки, используя SwingConstants.CENTER.

Все метки будут на равном расстоянии друг от друга, и вам не нужно устанавливать какие-либо вставки или поля.

List<String> labels = Arrays.asList("STD", "AIRLINE", "DESTINATION", "FLIGHT", "GATE", "STATUS");
imgPanel.setLayout(new GridLayout(1, labels.size())); // 1 row, 6 columns
labels.stream().forEach(s -> {
    JLabel label = new JLabel(s, SwingConstants.CENTER); // centered label text
    label.setFont(new Font("Century Gothic", Font.BOLD, 28));
    label.setForeground(new Color(255, 255, 255));
    imgPanel.add(label);
});

Вы также можете просто установить макет перед тем, как начинать добавлять ярлыки, но это более громоздко и не динамично.

imgPanel.setLayout(new GridLayout(1, 6)); // Six labels tiled horizontally

И не забудьте центрировать текст вашего ярлыка.

schedHd = new JLabel("STD", SwingConstants.CENTER);
airlineHd = new JLabel("AIRLINE", SwingConstants.CENTER);
// etc...
0
ответ дан Mr. Polywhirl 4 March 2019 в 21:49
поделиться

Спасибо всем, кто ответил на мой вопрос. Позже я обнаружил, что я не определил явно макет для каждого из контейнеров (панелей), которые я объявил перед добавлением к ним некоторого содержимого (меток), поэтому при восстановлении окна измерение имеет тенденцию разбрасываться. Хотя это может быть громоздким, но мне нравится иметь абсолютный контроль над позицией каждого элемента в окне. Еще раз спасибо

Ниже приведен пример того, как я решил это;

//After initializing the imgPanel

imgPanel.setLayout(null); //explicitly declare the imgPanel layout to null

JLabel lbl = new JLabel("STD");
imgPanel.add(lbl)

Insets imgPanelInsets = imgPanel.getInsets(); //define the components insets
Dimension sizeImg = lbl.getPreferredSize(); //define the components dimension
lbl.setBounds(100 + imgPanelInsets.left, 5 + imgPanelInsets.top,
             sizeImg.width + 5, sizeImg.height + 5);  

JLabel lbl2 = new JLabel("AIRLINE");
imgPanel.add(lbl2)

sizeImg = lbl2.getPreferredSize();
lbl2.setBounds(100 + imgPanelInsets.left, 5 + imgPanelInsets.top,
             sizeImg.width + 5, sizeImg.height + 5); 
0
ответ дан IFEANYI ODENIGBO 4 March 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: