Note that there are some explanatory texts on larger screens.

plurals
  1. POhow do I build a layout that resizes dynamically in java?
    primarykey
    data
    text
    <p>I need to know how to build a java layout that will be dynamically resized. The layout is set up with 4 panels, stacked top to bottom:</p> <p>the top panel is a GridLayout(4,2). each rown is a label and a text field the second panel is a single button the third panel is a grid layout (n,2). I will get to n in a minute the bottom panel is also a single button</p> <p>the n is a dynamically changing number. the third panel contains a text field, then a panel with 2 buttons to the right. the problem I have is that I need to be able to add and remove these rows and have the JFrame resize automatically as I do. I tried setting the Frame as a GridLayout(4,1), but when I change the size on actionPerformed(), it spreads the extra space evenly. I want to add only space to the third panel.</p> <p>Thanks</p> <p><strong>EDIT: ActionPerformed Method</strong></p> <pre><code>public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if (src == addTarget) { targetChoosers.add(new JFileChooser(new File("C:\\"))); targets.add(new JTextField()); targetButtons.add(new JButton("Browse...")); targetDeleters.add(new JButton("Delete")); int numTargets = targets.size(); targetButtons.get(numTargets - 1).addActionListener(this); targetDeleters.get(numTargets - 1).addActionListener(this); bottomPanel.setLayout(new GridLayout(numTargets, 2)); bottomPanel.add(targets.get(numTargets - 1)); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, 2)); panel.add(targetButtons.get(numTargets - 1)); panel.add(targetDeleters.get(numTargets - 1)); bottomPanel.add(panel); } //... else if (targetDeleters.contains(src)) { int index = targetDeleters.indexOf(src); targets.remove(index); targetChoosers.remove(index); targetButtons.remove(index); targetDeleters.remove(index); this.remove(submit); this.remove(bottomPanel); int numTargets = targets.size(); bottomPanel = new JPanel(new GridLayout(numTargets, 2)); for (int i = 0; i &lt; targets.size(); i++) { bottomPanel.add(targets.get(i)); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, 2)); panel.add(targetButtons.get(i)); panel.add(targetDeleters.get(i)); bottomPanel.add(panel); } this.add(bottomPanel); this.add(submit); } //... pack(); invalidate(); validate(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload