Я импортировал все необходимые классы и ошибок не было. Но когда я нажимаю кнопку ввода в любом текстовом поле, окно приглашения пустое, а не строка, которую она намеревается показать. Я не хочу, если проблема с JOptionPane или что. Когда я запускаю свой код в первый раз, он работал нормально во втором запуске, появляется пустое приглашение.
public class fish extends JFrame{
private JTextField item1;
private JTextField item2;
private JTextField item3;
private JPasswordField password;
public fish(){
super("Title");
setLayout(new FlowLayout());
item1=new JTextField(10);
add (item1);
item2=new JTextField("Enter Txt here");
add (item2);
item3=new JTextField("Uneditable",20);
item3.setEditable(false);
add (item3);
password = new JPasswordField("MyPass");
add(password);
thehandler handler = new thehandler();
item1.addActionListener(handler);
item3.addActionListener(handler);
item2.addActionListener(handler);
password.addActionListener(handler);
}
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
String string = "";
if(event.getSource()==item1)
String.format("field1: %s", event.getActionCommand());
else if(event.getSource()==item2)
String.format("field2: %s", event.getActionCommand());
else if(event.getSource()==item3)
String.format("field3: %s", event.getActionCommand());
else if(event.getSource()==password)
String.format("Password Field: %s", event.getActionCommand());
JOptionPane.showMessageDialog(null, string);
}
}
}
public class apples{
public static void main(String args[]){
fish tuna = new fish();
tuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tuna.setSize(350,100);
tuna.setVisible(true);
}
}
Вы показываете пустую строку. Вот:
public void actionPerformed(ActionEvent event){
String string = "";
if(event.getSource()==item1)
String.format("field1: %s", event.getActionCommand());
else if(event.getSource()==item2)
String.format("field2: %s", event.getActionCommand());
else if(event.getSource()==item3)
String.format("field3: %s", event.getActionCommand());
else if(event.getSource()==password)
String.format("Password Field: %s", event.getActionCommand());
JOptionPane.showMessageDialog(null, string);
}
Где вы назначаете что-либо переменной String, string
? Кроме того, вы никогда не получаете текст из JTextField, а скорее строку ActionCommand, которая никогда не была назначена.
т.е.
public void actionPerformed(ActionEvent event){
String string = "";
if(event.getSource()==item1) {
string = String.format("field1: %s", item1.getText())
}
else if(event.getSource()==item2) {
string = String.format("field2: %s", item2.getText());
}
else if(event.getSource()==item3) {
string = String.format("field3: %s", item3.getText());
}
else if(event.getSource()==password) {
string = String.format("Password Field: %s", new String(password.getPassword()));
}
JOptionPane.showMessageDialog(null, string);
}
new String(password.getPassword())
, так как это делает вашу программу очень небезопасной, поскольку пароль будет легко украсть.