Элементы JPanel не появляются


Я использую библиотеку Swing, чтобы запросить у пользователя его zipcode, но все, что появляется, - это поле без текстового поля или каких-либо других элементов, которые я добавил (см. код). Кроме того, вам, вероятно, нужно знать, что я пытаюсь получить int AskZip() в моем методе public static void main(String[] args).

    private static int zip;
    public static int AskZip() {
        JFrame zaWindow = new JFrame("What Zipcode");
        zaWindow.setSize(200, 300);
        JPanel jp = new JPanel();
        final JTextField tf = new JTextField("Enter Zip Here");
        JLabel label = new JLabel();
        JButton button = new JButton("Get Weather");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String sZip = tf.getText();
                int rZip = 0;
                try {
                    if (sZip.length() != 5) {
                        JOptionPane.showMessageDialog(null, "Invalid zipcode!", "Error", JOptionPane.ERROR_MESSAGE);
                    } else {
                        rZip = Integer.parseInt(sZip);
                    }
                } catch (NumberFormatException arg) {
                    JOptionPane.showMessageDialog(null, "Invalid zipcode!", "Error", JOptionPane.ERROR_MESSAGE);
                }
                zip = rZip;
            }
        });
        label.setText("What is your zipcode?");
        jp.add(label);
        jp.add(tf);
        jp.add(button);
        zaWindow.add(jp);
        return zip;
    }
1 2

1 ответ:

JFrame zaWindow..

Это должен быть модальный диалог или JOptionPane. Например, эта страна имеет 3 штата, каждый с 10 почтовыми кодами.

Введите Почтовый Индекс

import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.event.ChangeListener;

class ZipQuery {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                ZipNumberModel znm = new ZipNumberModel();
                JSpinner zip = new JSpinner(znm);

                JOptionPane.showMessageDialog(null, zip, "Enter Zipcode", JOptionPane.QUESTION_MESSAGE);
                System.out.println("User chose " + znm.getValue());
            }
        };
        // Swing GUIs should be created and updated on the EDT
        // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    }
}

class ZipNumberModel extends SpinnerNumberModel {

    private ArrayList<Integer> zipCodes;
    private int index = 0;

    ZipNumberModel() {
        zipCodes = new ArrayList<Integer>();
        int zip = 10000;
        for (int jj = 1; jj < 4; jj++) {
            for (int ii = jj * zip; ii < jj * zip + 10; ii++) {
                zipCodes.add(new Integer(ii));
            }
        }
    }

    @Override
    public Object getValue() {
        return zipCodes.get(index);
    }

    @Override
    public Object getNextValue() {
        if (index < zipCodes.size()-1) {
            index++;
        } else {
            index = 0;
        }
        return zipCodes.get(index);
    }

    @Override
    public Object getPreviousValue() {
        if (index > 0) {
            index--;
        } else {
            index = zipCodes.size()-1;
        }
        return zipCodes.get(index);
    }
}