I'm working on a project on JAVA Swing. I don't have much experience in JAVA, and I need some help from you guys.
I'm using frame.pack()
so it takes the optimal size as required. My screenTwo
can change depending on the input from ScreenOne
. I've used frame.setMaximumSize(new Dimension(1300, 500))
but it doesn't seem to be working.
If the frame gets bigger, it overlaps with the Taskbar, and I don't want that, so it should be a bit smaller than the total Screen size. How to achieve this?
EDIT:
Code:
public class Test {
private static JFrame frame ;
private JRadioButton[] radioButton;
public static void main(String[] args) {
Test t = new Test();
t.go();
frame.pack();
frame.setMaximumSize(new Dimension(1300, 600));
frame.setResizable(false);
frame.setVisible(true);
Dimension si = frame.getContentPane().getSize();
System.out.println(si); //Output: java.awt.Dimension[width=934,height=751]
}
public void go()
{
frame = new JFrame();
JPanel panel1 = new JPanel();
frame.getContentPane().add(panel1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.setLayout(new BorderLayout(0, 20));
Font font = new Font("Times New Roman", Font.PLAIN, 20);
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 1));
panel2.add(new JLabel(" Flight ID"));
panel2.add(new JLabel(" Departure"));
panel2.add(new JLabel(" Arrival "));
panel2.add(new JLabel(" Transit Time "));
panel2.add(new JLabel("Total Duration "));
panel1.add(BorderLayout.NORTH, panel2);
JPanel panel3 = new JPanel();
panel3.setLayout(new GridLayout(0, 1));
GridBagConstraints c = new GridBagConstraints();
int comboSize = 15, i;
JPanel panelCombo[] = new JPanel[comboSize];
ButtonGroup group = new ButtonGroup();
radioButton = new JRadioButton[comboSize];
/***
Adding a bunch of components in here
***/
for(i=0; i<comboSize; i++) {
panelCombo[i] = new JPanel();
panelCombo[i].setLayout(new GridBagLayout());
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(0, 50, 0, 50);
panelCombo[i].add(new JLabel("Flight 1 ID"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Dept Time"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Arr Time"), c);
c.gridx++;
c.gridheight = 4;
panelCombo[i].add(new JLabel("Total time"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Duration"), c);
c.gridx++;
radioButton[i] = new JRadioButton();
panelCombo[i].add(radioButton[i], c);
group.add(radioButton[i]);
c.gridheight = 1;
c.gridx = 0;
c.gridy++;
panelCombo[i].add(new JLabel("Depar to Arrival"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Date"), c);
c.gridx = 0;
c.gridy++;
panelCombo[i].add(new JLabel("Flight 2 ID"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Dept Time"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Arr Time"), c);
c.gridx = 0;
c.gridy++;
panelCombo[i].add(new JLabel("Dept to Arrival"), c);
c.gridx++;
panelCombo[i].add(new JLabel("Date"), c);
panelCombo[i].setBackground(Color.GREEN);
panel3.add(panelCombo[i]);
panelCombo[i].setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
JScrollPane scroll = new JScrollPane(panel3);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel1.add(BorderLayout.CENTER, scroll);
}
}