Беда с видимостью JFrame - PullRequest
       5

Беда с видимостью JFrame

0 голосов
/ 12 февраля 2020

Я несколько дней задавал вопрос go о том, почему элементы моего GUI не отображаются и ему удалось это исправить! Функциональность программы заключается в том, чтобы запросить у пользователя 3 целых числа в 3 различных текстовых полях, и он объединит целые числа.

Однако я хотел сделать программу немного более приятной и создать методы для различных элементов GUI. К сожалению, когда я запускаю программу, она показывает пустое поле, и даже когда я нахожу курсор мыши над областями, где должны быть элементы, ничего не появляется! Я хотел, чтобы мой createInterface() метод был нестатичным c, но я не могу заставить его скомпилироваться, пока он не будет c. Это часть проблемы? Вот мой код:

import javax.swing.*;
import java.awt.event.*;

public class ButtonPractice extends javax.swing.JFrame
{

    public static void main(String[] args)
    {
        createInterface();
    }

    public static void createInterface()
    {
        JFrame box = new JFrame("Lab 2b");
        box.setSize(500,500);
        box.setResizable(false);
        box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //call methods to fill
        box.setVisible(true);
    }

    public void createGUI(JFrame frame)
    {
        //create jpanel
        JPanel panel = new JPanel();
        panel.setLayout(null);
        //adds the panel onto the JFrame
        frame.add(panel);
        frame.setContentPane(panel);

        labels(panel);
        createTextFields(panel);
        createButtons(panel);

        frame.setVisible(true);

    }

    public void labels(JPanel pane)
    {
        //create a description
        JLabel labelNumOne = new JLabel("First input");
        labelNumOne.setBounds(75,40,150,50);
        pane.add(labelNumOne);

        JLabel labelNumTwo = new JLabel("Second input");
        labelNumTwo.setBounds(75,115,150,50);
        pane.add(labelNumTwo);

        JLabel labelNumThree = new JLabel("Third input");
        labelNumThree.setBounds(75,190,150,50); 
        pane.add(labelNumThree);   
    }

    public void createTextFields(JPanel pane)
    {
        //creates  box to put strings
        JTextField inputNumOne = new JTextField("First number");
        inputNumOne.setBounds(225,50,200,30);
        pane.add(inputNumOne);

        JTextField inputNumTwo = new JTextField("Second number");
        inputNumTwo.setBounds(225,125,200,30);
        pane.add(inputNumTwo);

        JTextField inputNumThree = new JTextField("Third number");
        inputNumThree.setBounds(225,200,200,30);
        pane.add(inputNumThree);

        //shows output
        JTextField outputString = new JTextField("Output");
        outputString.setBounds(75,400,300,30);
        pane.add(outputString);
    }

    public void createButtons(JPanel pane)
    {
        //create a button
        JButton combiner = new JButton("Concactentate");
        combiner.setBounds(275,300,125,50);
        pane.add(combiner);

        combiner.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                String boxOne = inputNumOne.getText();
                String boxTwo = inputNumTwo.getText();
                String boxThree = inputNumThree.getText();

                String concact = boxOne+boxTwo+boxThree;
                outputString.setText(concact);
            }
        });

    }
}   
...