0

Hello and good afternoon,

I am very new to Java GUI programming and this is my first project. I am currently working on making a scoreboard GUI to display users scores, some questions, etc. I have been working out of the NetBeans GUI Builder and have tried to size my application appropriately.

Ideally, when I press "Build and Compile" and then run this thing, I would like for pretty much what I have listed in this picture to populate: Desired GUI

But instead, it looks like this: Bad Current GUI

I have tried looking at: https://docs.oracle.com/javase/tutorial/uiswing/layout/problems.html Resizing JPanel Form in NetBeans GUI Builder

and nothing has produced an answer that I can use. Can anyone please assist me with this? I have been at this for four hours and really am hoping to find a resolution so I can learn and continue to grow my Java GUI Skillset. Below is the project's code.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Kelly
 */
public class Scoreboard extends javax.swing.JFrame {

    /**
     * Creates new form Scoreboard
     */
    public Scoreboard() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        panelQuestion = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtQuestion = new javax.swing.JTextPane();
        panelQInfo = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtCategory = new javax.swing.JTextPane();
        jScrollPane3 = new javax.swing.JScrollPane();
        txtValue = new javax.swing.JTextPane();
        panelScores = new javax.swing.JPanel();
        panelTeamOne = new javax.swing.JPanel();
        lblTeamOne = new javax.swing.JLabel();
        lblTeamOneScore = new javax.swing.JLabel();
        panelTeamTwo = new javax.swing.JPanel();
        lblTeamOne1 = new javax.swing.JLabel();
        lblTeamTwoScore = new javax.swing.JLabel();
        panelTeamThree = new javax.swing.JPanel();
        lblTeamThree = new javax.swing.JLabel();
        lblTeamThreeScore = new javax.swing.JLabel();
        btnAnswer = new javax.swing.JButton();
        jScrollPane4 = new javax.swing.JScrollPane();
        txtSpins = new javax.swing.JTextPane();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("GameGUI");
        setName("frame_Scoreboard"); // NOI18N
        setPreferredSize(new java.awt.Dimension(1000, 1000));
        setResizable(false);

        jScrollPane1.setViewportView(txtQuestion);

        txtCategory.setMaximumSize(new java.awt.Dimension(6, 22));
        jScrollPane2.setViewportView(txtCategory);

        txtValue.setMaximumSize(new java.awt.Dimension(6, 22));
        jScrollPane3.setViewportView(txtValue);

        javax.swing.GroupLayout panelQInfoLayout = new javax.swing.GroupLayout(panelQInfo);
        panelQInfo.setLayout(panelQInfoLayout);
        panelQInfoLayout.setHorizontalGroup(
            panelQInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelQInfoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 242, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelQInfoLayout.setVerticalGroup(
            panelQInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelQInfoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelQInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE)
                    .addComponent(jScrollPane2))
                .addContainerGap())
        );

        javax.swing.GroupLayout panelQuestionLayout = new javax.swing.GroupLayout(panelQuestion);
        panelQuestion.setLayout(panelQuestionLayout);
        panelQuestionLayout.setHorizontalGroup(
            panelQuestionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelQuestionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelQuestionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1)
                    .addComponent(panelQInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        panelQuestionLayout.setVerticalGroup(
            panelQuestionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelQuestionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelQInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 401, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        panelTeamOne.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 3, true));

        lblTeamOne.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        lblTeamOne.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamOne.setText("Team One Score:");
        lblTeamOne.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        lblTeamOneScore.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblTeamOneScore.setForeground(new java.awt.Color(0, 153, 51));
        lblTeamOneScore.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamOneScore.setText("750");
        lblTeamOneScore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout panelTeamOneLayout = new javax.swing.GroupLayout(panelTeamOne);
        panelTeamOne.setLayout(panelTeamOneLayout);
        panelTeamOneLayout.setHorizontalGroup(
            panelTeamOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamOneLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelTeamOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblTeamOneScore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelTeamOneLayout.createSequentialGroup()
                        .addGap(0, 12, Short.MAX_VALUE)
                        .addComponent(lblTeamOne, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(9, 9, 9)))
                .addContainerGap())
        );
        panelTeamOneLayout.setVerticalGroup(
            panelTeamOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamOneLayout.createSequentialGroup()
                .addGap(5, 5, 5)
                .addComponent(lblTeamOne, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(lblTeamOneScore, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 14, Short.MAX_VALUE))
        );

        panelTeamTwo.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 3, true));

        lblTeamOne1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        lblTeamOne1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamOne1.setText("Team Two Score:");
        lblTeamOne1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        lblTeamTwoScore.setBackground(new java.awt.Color(255, 204, 204));
        lblTeamTwoScore.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblTeamTwoScore.setForeground(new java.awt.Color(204, 51, 0));
        lblTeamTwoScore.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamTwoScore.setText("-200");
        lblTeamTwoScore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout panelTeamTwoLayout = new javax.swing.GroupLayout(panelTeamTwo);
        panelTeamTwo.setLayout(panelTeamTwoLayout);
        panelTeamTwoLayout.setHorizontalGroup(
            panelTeamTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamTwoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelTeamTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblTeamTwoScore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelTeamTwoLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(lblTeamOne1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(9, 9, 9)))
                .addContainerGap())
        );
        panelTeamTwoLayout.setVerticalGroup(
            panelTeamTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamTwoLayout.createSequentialGroup()
                .addGap(5, 5, 5)
                .addComponent(lblTeamOne1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(lblTeamTwoScore, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 15, Short.MAX_VALUE))
        );

        panelTeamThree.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 3, true));

        lblTeamThree.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        lblTeamThree.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamThree.setText("Team Three Score:");
        lblTeamThree.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        lblTeamThreeScore.setBackground(new java.awt.Color(255, 204, 204));
        lblTeamThreeScore.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        lblTeamThreeScore.setForeground(new java.awt.Color(0, 153, 51));
        lblTeamThreeScore.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTeamThreeScore.setText("1300");
        lblTeamThreeScore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout panelTeamThreeLayout = new javax.swing.GroupLayout(panelTeamThree);
        panelTeamThree.setLayout(panelTeamThreeLayout);
        panelTeamThreeLayout.setHorizontalGroup(
            panelTeamThreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamThreeLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelTeamThreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblTeamThreeScore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelTeamThreeLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(lblTeamThree, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(9, 9, 9)))
                .addContainerGap())
        );
        panelTeamThreeLayout.setVerticalGroup(
            panelTeamThreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTeamThreeLayout.createSequentialGroup()
                .addGap(5, 5, 5)
                .addComponent(lblTeamThree, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(lblTeamThreeScore, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 15, Short.MAX_VALUE))
        );

        btnAnswer.setText("Show Answer");

        txtSpins.setText("There are <x> spins remaining.");
        jScrollPane4.setViewportView(txtSpins);

        javax.swing.GroupLayout panelScoresLayout = new javax.swing.GroupLayout(panelScores);
        panelScores.setLayout(panelScoresLayout);
        panelScoresLayout.setHorizontalGroup(
            panelScoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelScoresLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelScoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane4)
                    .addGroup(panelScoresLayout.createSequentialGroup()
                        .addGroup(panelScoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(panelTeamOne, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(panelTeamTwo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(panelTeamThree, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap())
                    .addComponent(btnAnswer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
        panelScoresLayout.setVerticalGroup(
            panelScoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScoresLayout.createSequentialGroup()
                .addComponent(panelTeamOne, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(panelTeamTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(panelTeamThree, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(btnAnswer, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane4)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelQuestion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelScores, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(23, 23, 23))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(panelQuestion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(39, 39, 39)
                        .addComponent(panelScores, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Scoreboard.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Scoreboard.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Scoreboard.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Scoreboard.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Scoreboard().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnAnswer;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JLabel lblTeamOne;
    private javax.swing.JLabel lblTeamOne1;
    private javax.swing.JLabel lblTeamOneScore;
    private javax.swing.JLabel lblTeamThree;
    private javax.swing.JLabel lblTeamThreeScore;
    private javax.swing.JLabel lblTeamTwoScore;
    private javax.swing.JPanel panelQInfo;
    private javax.swing.JPanel panelQuestion;
    private javax.swing.JPanel panelScores;
    private javax.swing.JPanel panelTeamOne;
    private javax.swing.JPanel panelTeamThree;
    private javax.swing.JPanel panelTeamTwo;
    private javax.swing.JTextPane txtCategory;
    private javax.swing.JTextPane txtQuestion;
    private javax.swing.JTextPane txtSpins;
    private javax.swing.JTextPane txtValue;
    // End of variables declaration                   
}

Thank you!

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
artemis
  • 6,857
  • 11
  • 46
  • 99
  • 1) See [Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?](http://stackoverflow.com/q/7229226/418556) (Yes.) 2) For better help sooner, post a [MCVE] or [Short, Self Contained, Correct Example](http://www.sscce.org/). – Andrew Thompson Jul 15 '18 at 01:12
  • Hi Andrew. Could you please describe to me how my post did not comply with the two FAQs you attached? Thanks. – artemis Jul 15 '18 at 15:42
  • I provided 3 links. Which two are you referring to? – Andrew Thompson Jul 16 '18 at 01:55

2 Answers2

1

setPreferredSize(new java.awt.Dimension(1000, 1000)); is the problem. You are explicitly changing the size to be 1000x1000. You need to remove that line and replace it with pack();. pack() will allow the the JFrame to fit all the components it holds nicely.

M. Al Jumaily
  • 731
  • 1
  • 6
  • 21
  • Hello, thanks a lot for your comment and for identifying the problem. I was lost. Without needing to change the code itself, do you know if this is possible within the GUI Editor? Or do I need to change the source code? – artemis Jul 14 '18 at 23:17
  • Of course, I did find a way without changing the pre-generated code. Change your constructor to the following `public Scoreboard() { initComponents(); setPreferredSize(getMinimumSize()); pack(); }` – M. Al Jumaily Jul 14 '18 at 23:33
-1

I found the solution.

  1. Right click on the JFrame
  2. Select Properties
  3. Navigate to the Code tab
  4. Find the value in "Designer Size"
  5. Navigate back to Properties
  6. Set the preferred size to the value in Designer Size
  7. Set the minimum size to -100 of the Designer Size
  8. Set the maximum size to +100 of the Designer Size
artemis
  • 6,857
  • 11
  • 46
  • 99
  • *"I found the solution."* No, that's a (fragile) hack. BTW - learn how to code GUIs without the GUI designer (i.e. write the Java code). Until you know how to write the code, you are not using the designer, so much as it is using you. – Andrew Thompson Jul 15 '18 at 01:15