JOptionPane showConfirmDialog를 통해 사용자의 입력을 확인하고 문자열에 신뢰할 수있는 연령이 포함되어 있는지 확인하는 좋은 방법을 찾고 있습니다. 아이디어는 이러한 입력을 사용하여 객체에 추가 한 다음 객체를 ArrayList에 추가하는 것입니다.JOptionPane 입력 유효성 검사
문제는 "아래의"NyLis "클래스입니다. 확인하는 방법이 있나요
-
(18) 사이에서 100 이름 =보기 이름, 토지 = 국가. 오리는 = 세. 나이가되어야한다 문자열이 실제 문자열입니까?
- 입력이 유효하지 않은 경우 창을 반환하고 이전 입력을 유지하므로 잘못 사용 된 곳을 선택할 수 있습니다.
- 블록을 시도하고 catch합니까? 좋은 옵션은 무엇이며 어떻게 구현합니까?
나는 while 루프를 사용하여 놀고 있었고 블록을 잡으려고했지만 모두 내 어리석은 머리를 감쌀 수는 없다.
도움이된다면 대단히 감사하겠습니다.
// JOptionPane의 창
Form(){
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel rad0 = new JPanel();
rad0.add(new JLabel("StartNr: "+ list.size()+1+""));
add(rad0);
JPanel rad1 = new JPanel();
rad1.add(new JLabel("Namn: "));
namnFält = new JTextField(15);
rad1.add(namnFält);
add(rad1);
JPanel rad2 = new JPanel();
rad2.add(new JLabel("Land: "));
landFält = new JTextField(15);
rad2.add(landFält);
add(rad2);
JPanel rad3 = new JPanel();
ålderFält = new JTextField(5);
rad3.add(ålderFält);
rad3.add(new JLabel("Ålder: "));
rad3.add(ålderFält);
add(rad3);
}
}
// 리스너
class NyLis implements ActionListener{
public void actionPerformed(ActionEvent ave){
Form f = new Form();
int svar = JOptionPane.showConfirmDialog(null, f);
if (svar != JOptionPane.OK_OPTION)
return;
String namn = f.namnFält.getText();
String land = f.landFält.getText();
int ålder = Integer.parseInt(f.ålderFält.getText());
boolean success=false;
while(!success){
JOptionPane.showMessageDialog(null, "Fel. Försök igen.");
int svar2 = JOptionPane.showConfirmDialog(null, f);
if (svar2 != JOptionPane.OK_OPTION)
return;
if(!namn.isEmpty() && !land.isEmpty()&&!(ålder<18 || ålder>100)){
success=true;
int startNr = list.size()+1;
Tävlande tv = new Tävlande (namn,land,ålder,startNr,Double.MAX_VALUE);
list.add(tv);
visa.setEnabled(true);
}
}
}
}
//
public class Tävlande implements Comparable<Tävlande>{
private String namn;
private String land;
private int ålder;
private int startNr;
private double tid;
public Tävlande (String namn, String land,int ålder,int startNr, double tid){
this.namn = namn;
this.land = land;
this.ålder = ålder;
this.startNr = startNr;
this.tid = tid;
}
public String getNamn(){
return namn;
}
public String getLand(){
return land;
}
public int getÅlder(){
return ålder;
}
public int getStartNr(){
return startNr;
}
public double getTid(){
return tid;
}
public void setTid(Double tid) {
this.tid = tid;
}
public String toString(){
String str = namn +" " + ", Land: "+land + ", Ålder: " +ålder+ ", Startnummer: " + " "+startNr;
return str;
}
public String toString2(){
String str = namn +" " + ", Land: "+land + ", Ålder: " +ålder+ ", Startnummer: " + " "+startNr+ ", Tid: "+tid;
return str;
}
public boolean equals(Object other){
if (other instanceof Tävlande){
Tävlande t = (Tävlande) other;
if (startNr == t.startNr)
return true;
else
return false;
}
else{
return false;
}
}
@Override
public int compareTo(Tävlande other) {
if(startNr < other.startNr)
return -1;
else if (startNr > other.startNr)
return 1;
else
return 0;
}
}
, 게시 [MCVE] (http://stackoverflow.com/help/mcve) (최소 완전하고 검증 예). –