Элементы 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 ответ:
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); } }