java - JPanel 元素未出现

标签 java swing jpanel layout-manager

我正在使用 Swing 库询问用户的邮政编码,但出现的只是一个框,没有文本框或我添加的任何其他元素(请参阅代码)。另外,您可能需要知道我正在尝试在 public static void main(String[] args) 方法中获取 int AskZip() 。

    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;
    }

最佳答案

JFrame zaWindow..

这应该是一个模式对话框或一个JOptionPane。例如。该国有 3 个州,每个州有 10 个邮政编码。

Enter Zip Code

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);
    }
}

关于java - JPanel 元素未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006150/

相关文章:

将嵌套循环重新设计为方法的 Java 性能

java - 使用 Vectors 字符串刷新 JTable

java - 尝试从 .getText() 解析字符串时出现 NumberFormatException;

java - java中的处理时间

java - 如何在JAVA中添加鼠标监听器?

java - JPanel 中的 JButton 占用太多空间

java - 为什么 Eclipse 将接口(interface)方法标记为 public abstract?

java - 如何打印精确的浮点 double 值

java - "Length must be at least 1 (was -1)"是什么原因导致此问题以及如何修复它?

java - JButton 会自动更新吗?