0

Hello I am trying to create a GUI where there are two screens side by side with controls underneath each screen and then a set of master controls to control both screens at the same time. Im using grid layout and it is cause there to be a giant space between the master control set and the two individual sets. (see image) Why is this?grid layout issue

Here is my code:

    //create panel for content
    JPanel contentPane = new JPanel();
    GridLayout expLayout = new GridLayout(3,2);
    contentPane.setLayout(expLayout);

    mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
    mediaPlayerComponent.setPreferredSize(new Dimension(600, 600));
    contentPane.add(mediaPlayerComponent);

    mediaPlayerComponent2 = new EmbeddedMediaPlayerComponent();
    mediaPlayerComponent2.setPreferredSize(new Dimension(600, 600));
    contentPane.add(mediaPlayerComponent2);

    //create screen 1 buttons
    JPanel controlsPane1 = new JPanel();
    playButton1 = new JButton(playImg);
    playButton1.setPreferredSize(new Dimension(30, 30));
    controlsPane1.add(playButton1);
    rewindButton1 = new JButton(rewindImg);
    rewindButton1.setPreferredSize(new Dimension(30, 30));
    controlsPane1.add(rewindButton1);
    skipButton1 = new JButton(skipImg);
    skipButton1.setPreferredSize(new Dimension(30, 30));
    controlsPane1.add(skipButton1);
    nextFrame1 = new JButton(nextFrameImg);
    nextFrame1.setPreferredSize(new Dimension(30, 30));
    controlsPane1.add(nextFrame1);
    openButton = new JButton(openButtonImg);
    openButton.setPreferredSize(new Dimension(30, 30));
    controlsPane1.add(openButton);


    //place screen 1 controls
    contentPane.add(controlsPane1);

    //create screen 2 buttons
    JPanel controlsPane2 = new JPanel();
    playButton2 = new JButton(playImg);
    playButton2.setPreferredSize(new Dimension(30, 30));
    controlsPane2.add(playButton2);
    rewindButton2 = new JButton(rewindImg);
    rewindButton2.setPreferredSize(new Dimension(30, 30));
    controlsPane2.add(rewindButton2);
    skipButton2 = new JButton(skipImg);
    skipButton2.setPreferredSize(new Dimension(30, 30));
    controlsPane2.add(skipButton2);
    nextFrame2 = new JButton(nextFrameImg);
    nextFrame2.setPreferredSize(new Dimension(30, 30));
    controlsPane2.add(nextFrame2);
    openButton2 = new JButton(openButtonImg);
    openButton2.setPreferredSize(new Dimension(30, 30));
    controlsPane2.add(openButton2);

    //place screen 2 controls
    contentPane.add(controlsPane2);

    //create panel for buttons for Dual screen
    JPanel controlsPane = new JPanel();

    playButton = new JButton(playImg);
    playButton.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(playButton, BorderLayout.PAGE_END);
    rewindButton = new JButton(rewindImg);
    rewindButton.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(rewindButton, BorderLayout.PAGE_END);
    skipButton = new JButton(skipImg);        
    skipButton.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(skipButton, BorderLayout.PAGE_END);
    nextFrame = new JButton(nextFrameImg);
    nextFrame.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(nextFrame, BorderLayout.PAGE_END);
    sync = new JButton(syncImg);
    sync.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(sync, BorderLayout.PAGE_END);
    unsync = new JButton(unSyncImg);
    unsync.setPreferredSize(new Dimension(30, 30));
    controlsPane.add(unsync);
    //place control pane at bottom
    contentPane.add(controlsPane);
frame.setContentPane(contentPane);

    frame.setVisible(true);

}
Mark Harrison
  • 151
  • 1
  • 10
  • i would say that for each cell, the size from the biggest component is taken (600x600). Also try to provide code which we can test on our own (cut out your classes, but still re-produce the error). from the [docs](https://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html): `A GridLayout object places components in a grid of cells. Each component takes all the available space within its cell, and each cell is exactly the same size.` – XtremeBaumer Jan 16 '18 at 12:04
  • Okay thanks, best find a better layout then! – Mark Harrison Jan 16 '18 at 12:19
  • probably `GridBagLayout` is something to look into – XtremeBaumer Jan 16 '18 at 13:10

0 Answers0