2013-04-09 5 views
2

У меня есть этот код .. здесь, когда я вводил число «6» в текстовое поле, текст должен отображаться в текстовом поле ... но после этого, если я ввожу какой-либо другой номер, я хочу, чтобы содержимое textarea будь понятен. Но когда я выполняю свой код, старое содержимое текстовой области остается даже при вводе другого номера. Пожалуйста помоги!сбрасывает содержимое текстовой области

import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
/* <applet code="front" width=500 height=500></applet> */ 
public class front extends Applet implements ActionListener { 
    String msg=""; 
    TextArea text,text1; 
    TextField txt; 
    Button load, enter; 

    public void init() { 
    enter=new Button("Enter"); 
    load=new Button("Load"); 
    txt=new TextField(5); 
    text=new TextArea(10,15); 

    add(load); 
    add(text); 

    add(txt); 
    add(enter); 

    load.addActionListener(this); 
    txt.addActionListener(this); 
    enter.addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent ae) 
    { 
    String str = ae.getActionCommand(); 
    if(str.equals("Load")) { 
     msg = "You pressed Load"; 
    } else { 
     if(txt.getText().toString().equals ("6")) { 
     msg="Set the text for 6"; 
     text.setText("Text"); 
     } else { 
     msg="Invalid number"; 
     text.setText(""); 
     } 
    } 
    repaint(); 
    } 

    public void paint(Graphics g) { 
    g.drawString(msg,350,250); 
    } 
} 
+1

Я использую этот пример на своем компьютере, и TextArea очищается, если я набираю что-либо, кроме «6», это текстовое поле (если я набираю «6», он устанавливает текстовое поле в «Текст») –

+0

Вы хотите, чтобы вы TextField будет очищен? –

+0

TextArea itseld..It работает .. но он не работает все время .. особенно когда есть две области текста .. есть проблема с моим программным обеспечением или что-то в этом роде? – praveena

ответ

2

написать свой метод actionPerformed() следующим образом

public void actionPerformed(ActionEvent ae) 
    { 
    String str = ae.getActionCommand(); 
    if(str.equals("Load")) { 
     msg = "You pressed Load"; 
    } else { 
     if(txt.getText().toString().equals ("6")) 
     { 
     **text.setText("");** 
     msg="Set the text for 6"; 
     text.setText("Text"); 
     } 
     else { 
     msg="Invalid number"; 
     text.setText(""); 
     } 
    } 
    repaint(); 
    } 

ошибка в том, что вы не убирали текстовое поле после записи в него! теперь очищается с помощью text.setText(""); в if состояние

надеюсь, что это решает вашу проблему!

+0

Нет, он не делает :(он остается как «текст» сам .. дело только в msg «Invalid msg» отображается, но текстовое поле не очищается :( – praveena

0

Вы должны вызвать super.paint(g) в paint(Graphics g) метода:

public void paint(Graphics g) { 
    super.paint(g); 
    g.drawString(msg,350,250); 
    } 
0

Теперь, text.setText(""); не будет делать ничего, и она будет такой же, как //text.setText("");

Так лучше подход заключается в помощи ASCII кода,

Для значения NULL ASCII: 0, в unicode мы можем написать его как '\u0000'

И наконец это заявление, безусловно, работать: text.setText(""+'\u0000');

Примечание: их не метод класса TEXTAREA, чтобы очистить область ... Таким образом, вы должны сделать это самостоятельно.