Forum Stats

  • 3,816,104 Users
  • 2,259,142 Discussions
  • 7,893,390 Comments

Discussions

How to resize JPanel that uses GroupLayout

24676f69-39ee-4efe-8108-6491f6069fe6
edited Sep 6, 2017 11:46AM in Java Programming

I have a program in which there are 3 combo boxes and their labels in a Group Layout.  When the window first appears, only the first combo box contains options, so the window stretches only large enough to fit the labels and combo boxes.  After a person selects an item from the first combo box, the 2nd one is filled with associated data.  This associated data is sometimes causes the combo box to be too wide and expands beyond the window.  I have been playing with the JPanel's setPreferredSize and setMaxSize, but nothing appears to be happening.  Does anyone know how I'm supposed to change the width of the panel so that the drop-downs fit properly.

Here is the code I am currently trying to work on:

projectListener = function(){

var Project_Select = Project_Select_Field.getSelectedItem();

var proj;

var projSel;

var panelWidth = myPanel.getWidth();

var panelHeight = myPanel.getHeight();

var comboWidth = Project_Select_Field.getPreferredSize().width;

//if-statement to determine which list to use to populate.

newWidth = Project_Select_Field.getPreferredSize().width;

var diffWidth = 0;

if (newWidth > comboWidth) {

   diffWidth = newWidth - cojoWidthbb

}

myPanel.setPreferredSize((panelWidth + diffWidth), panelHeight);

Does anyone know what I'm doing wrong?

Chris

Tagged:

Answers

  • Unknown
    edited Sep 6, 2017 11:46AM
    Does anyone know what I'm doing wrong?

    The general process involves 1) modifying the size hints, 2) invalidating the object and 3) causing it to be repainted.

    The Java Tutorials has several chapters on how to work with UI objects. I suggest you read through them and actually try the examples.

    https://docs.oracle.com/javase/tutorial/uiswing/layout/problems.html

    If you specify new size hints for a component that is already visible, you then need to invoke the revalidate method on it, to make sure that its containment hierarchy is laid out again. Then invoke the repaint method.
This discussion has been closed.