자바 GUI에 중간삽입 하는방법(StringTokenizer)사용

이미지

ex) 밑에 텍스트 필드부분에 1 aaa 남자 를 치면
String x1=st.nextToken(); -> 1// String x2=st.nextToken();-> aaa// String x3=st.nextToken();-> 남자 //텍스트 필드에서 엔터 쳤을경우 값을 //x1값을 읽어와서 배열에 중간삽입을 하고싶습니다. ``ex 1값을 읽어올떄 1값을 밀어내고 텍스트필드에 입력한 1 aaa 남자를 중간삽입하는 코딩 //if(문을 사용해서 조건값을 비교하면될거같은데 계속 오류나서 질문드려봅니다)


import java.awt.; import java.awt.event.; import java.util.StringTokenizer; import java.util.Arrays; public class SaveStudent extends Frame implements ActionListener,MouseListener,KeyListener{ static Label a,a1,a2; static TextField name,name1; static Button input,output; static TextArea display; String data[] = new String[100];//문자열 100개를 저장할수있는 문자열 배열 생성

  String test_str[] = new String[100];
  String sss[]=new String[100];
  String ssss[]=new String[100];
  boolean gender[]=new boolean[100];

// double d[] = new double[100]; static Checkbox s1,s2; static CheckboxGroup cbg; String sssss; int s,count=0; int i; String c[] = new String[100]; //static StringTokenizer b; public SaveStudent(String s) { super(s); this.setLayout(new FlowLayout()); a = new Label("이름"); this.add(a);

  name = new TextField(20);
  this.add(name);

  a1= new Label("성별");
  this.add(a1);

  cbg=new CheckboxGroup();
  s1 = new Checkbox("남",true,cbg);
  this.add(s1);
  s2 = new Checkbox("여",false,cbg);
  this.add(s2);


  input = new Button("입력");
  this.add(input);

  output = new Button("출력");
  this.add(output);

  display = new TextArea();
  this.add(display);


  name1 = new TextField(20);
  this.add(name1);


  name1.addKeyListener(this);
  input.addActionListener(this);
  output.addMouseListener(this);
  addWindowListener(new WinListener());

} public static void main(String[] args) { String str="예제 프레임"; SaveStudent fr=new SaveStudent(str); fr.setBounds(0,0,550,550); //만들어진 Frame 객체 (fr)의 위치와 크기를 결정한다 fr.setVisible(true); // 만들어진 Frame 객체를 화면에 띄운다. }

public void actionPerformed(ActionEvent ae) { String temp = name.getText(); data[count]=temp; name.setText(""); gender[count] = s1.getState(); count++;//count = count + 1;

}

public void mouseClicked(MouseEvent qe) {

     display.setText("");
     for(i=0;i<count;i++) {
     if(gender[i]==true) {

        display.append( data[i]+"   "+"남자" +"\n");
        }
     else if(gender[i]==false) {

        display.append( data[i]+"   "+"여자" +"\n");
        }
  }

} public void keyTyped(KeyEvent ke) {} public void keyPressed(KeyEvent ke) { if(ke.getKeyChar() == KeyEvent.VK_ENTER) { String str1 = name1.getText(); StringTokenizer st =new StringTokenizer(str1," ");
ex) 텍스트 필드에 1 aaa 남자 를 치면
String x1=st.nextToken(); -> 1 String x2=st.nextToken();-> aaa String x3=st.nextToken();-> 남자

  //텍스트 필드에서  엔터 쳤을경우 값을 
//x1값을 읽어와서 배열에 중간삽입을 하고싶습니다. ex 1값을 읽어올떄 1값을 밀어내고 텍스트필드에 입력한 1 aaa 남자를 중간삽입하는 코딩
//if(문을 사용해서 조건값을 비교하면될거같은데 계속 오류나서 질문드려봅니다)


            while (st.hasMoreTokens()){
            이부분에 if사용해서 값을 비교한다음 넣으면 될꺼같은데  이밑에껀 안되네요.
          if(x1.equals(test_str[s])) {

                sss[s]=test_str[s];
                test_str[s]=x1;
                test_str[s+1]=sss[s];


                ssss[s]=data[s];
                data[s]=x2;
                data[s+1]=ssss[s];

             display.setText(test_str[s]+" "+data[s]);
             }



     }
  }             

``}

}

public void keyReleased(KeyEvent ke) {

}

public void mouseEntered(MouseEvent qe) {} public void mouseExited(MouseEvent qe) {} public void mousePressed(MouseEvent qe) {} public void mouseReleased(MouseEvent qe) {}

class WinListener extends WindowAdapter{ public void windowClosing(WindowEvent we) { System.exit(0); }

} }

  • 데이터를 입력할 때 그것을 프론트엔드에서 처리하지 말고 데이터 입력을 받으면 백엔드에서 컨테이너에 넣고 해당 컨테이너의 데이터를 소팅한 뒤 프론트엔드에서 해당 컨테이너 데이터의 데이터를 보여주는 작업을 하는 편이 낫습니다. 정영훈 2018.6.14 03:32

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.