Button logic ignored-why?
I'm writing a ciphering program that would take in regular words and convert them to a certain "code." Everything is done, but the program is ignoring the submit button code. What should I do to fix this?
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
public class decode extends JFrame {
private JTextArea textaci;
private JTextArea textaclr;
private J开发者_Go百科Label lclear;
private JLabel lcipher;
private JButton bsubmit;
private String cleartext;
private String ciphertext;
private boolean clrtoci;
public decode(){
super();
setTitle("Decoder");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridBagLayout());
GridBagConstraints c =new GridBagConstraints();
c.fill=GridBagConstraints.VERTICAL;
c.weightx=0.5;
textaci=new JTextArea();
textaclr=new JTextArea();
lclear=new JLabel("cleartext:");
lcipher=new JLabel("ciphertext:");
bsubmit=new JButton("Submit");
bsubmit.setActionCommand("enable");
textaci.setEditable(true);
textaci.setLineWrap(true);
textaclr.setEditable(true);
textaclr.setLineWrap(true);
textaci.setText(ciphertext);
c.gridx=0;
c.gridy=0;
add(lclear);
c.gridx=1;
c.gridy=0;
add(textaclr);
c.gridx=0;
c.gridy=2;
add(lcipher);
c.gridx=3;
c.gridy=4;
add(textaci);
add(bsubmit);
//----------------------------------------------------------------------------\\
TextFieldHandler hand=new TextFieldHandler();
bsubmit.addActionListener(hand);
setVisible(true);
}
public class TextFieldHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource()==bsubmit){
cleartext=textaclr.getText();
int cleartextl=cleartext.length();
if(textaci.getText()==null){
clrtoci=true;
}
else{
clrtoci=false;
}
if(clrtoci==true){//if it's cleartext to ciphertext
for(int i=0;i>=cleartextl;i++){
if(cleartext.contains("a")){
ciphertext="3";
}
if(cleartext.contains("b")){
ciphertext="b";
}
//and so on and on to the rest of the alphabet
}//end of for statement
textaci.setText(ciphertext);
setVisible(true);
System.out.print(ciphertext);
}//if it's cleartext to ciphertext
}//bsubmit logic
}//end of event
}//end of ActionListener
public static void main(String[] args){
new decode();
}
}
"but the program is ignoring the submit button code."
Define "ignore". The button works fine for me. Just add some System.out.println(...) statements to the code to see what parts of the code are executing.
The code will always go through the first if condition since the source will always be the submit button.
You need to reorganize your logic since the else condition will never be executed.
The action listener for the JButton
instance is working just fine. There's a problem with your loop logic. That is, you're looping infinitely.
for(int i = 0;i >= cleartextl; i++){
//do stuff
}
That should be refactored as follows:
for(int i = 0;i < cleartextl; i++){
//do stuff
}
Also, judging by the quality of your code, I recommend you read the following tutorials:
- Learning the Java Language
- Creating a GUI with JFC/Swing
I tried the code. clrtoci
is always false after the first test. I then looked at textaci.getText(), which apparently was not null
. I note you fill it with ciphertext
earlier, so it's possible that that String is not null
.
Edit:
Also for (int i = 0; i >= cleartextl; i++)
should be for (int i = 0; i < cleartextl; i++)
That makes it work respond on my machine.
`
精彩评论