Имеется задача: на форме должны быть два JList'а, завёрнутых в JScrollPane'ы. Над каждым из них есть JLabel'ы, подписывающие их. Между ними есть ещё что-то. Проблема: если текст в лэйблах разной длины, то при уменьшении окна скроллпейны будут становиться разной ширины, соответственно ширине лэйблов. Вопрос: как сделать, чтобы GridBagLayout при масштабировании не смотрел на ширину лейблов, или иначе, чтобы скроллпейны всегда были одинаковой ширины? Код: import java.awt.*; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import javax.swing.*; public class SwingTest11 { /** * @param args */ public static void createAndShowGUI() { JFrame f = new JFrame(); f.getContentPane().setLayout(new GridBagLayout()); f.setSize(new Dimension(640,480)); GridBagConstraints c = new GridBagConstraints(); JList jl1 = new JList(new DefaultListModel()), jl2 = new JList(new DefaultListModel()); ((DefaultListModel)jl1.getModel()).add(0, "fgsfds"); ((DefaultListModel)jl2.getModel()).add(0, "fgsfdsfgsfdsfgsfds"); final JScrollPane jsp1 = new JScrollPane(), jsp2 = new JScrollPane(); jsp1.setViewportView(jl1); jsp2.setViewportView(jl2); jsp1.setMaximumSize(new Dimension(100,100)); jsp2.setMaximumSize(new Dimension(100,100)); jsp1.setPreferredSize(new Dimension(344, 425)); jsp2.setPreferredSize(new Dimension(344, 425)); JButton b = new JButton("Button!"); JLabel jlab1 = new JLabel("loooooooooong label is long"), jlab2 = new JLabel("short"); jlab1.setLabelFor(jsp1); jlab2.setLabelFor(jsp2); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.weightx = 0; // c.weighty = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; f.getContentPane().add(jlab1,c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 1; c.weightx = 0.5; c.weighty = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.WEST; f.getContentPane().add(jsp1,c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 1; c.weightx =0; f.getContentPane().add(b,c); c = new GridBagConstraints(); c.gridx = 2; c.gridy = 0; c.weightx = 0; // c.weighty = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; f.getContentPane().add(jlab2,c); c = new GridBagConstraints(); c.gridx = 2; c.gridy = 1; c.weightx = 0.5; c.weighty = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.WEST; f.getContentPane().add(jsp2,c); f.pack(); f.show(); f.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { System.out.println("left: "+jsp1.getWidth()+"\nrigth: "+jsp2.getWidth()); } }); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } createAndShowGUI(); }}); } } Вывод на консоль: До: left: 468 rigth: 468 left: 488 rigth: 488 После: left: 291 rigth: 183
Ответ на:
комментарий
от naryl
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Дошлифовать Swing GUI desktop application (2016)
- Форум неработает обновление данных в таблице [java] (2012)
- Форум WebSocketServer и Timer Java (2018)
- Форум Java, awt/swing, проблемы с фокусом. (2008)
- Форум javafx (java 7 se) роняет X server! (2013)
- Форум android udp error (2014)
- Форум Изменение размера пера после применения аффинного преобразования координат (2007)
- Форум Крешится да и всё тут (2012)
- Форум Парсер на Java не парсит все что требуется (2017)
- Форум Помогите с EJB под WildFly (2015)