我正在编写一个加密程序,它会接受常规单词并将它们转换为某个“代码”。一切都已完成,但程序忽略了提交按钮代码。我该怎么做才能解决这个问题?
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 JLabel 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();
}
}
答案 0 :(得分:6)
"but the program is ignoring the submit button code."
定义“忽略”。该按钮对我来说很好。只需在代码中添加一些System.out.println(...)语句,即可查看代码的哪些部分正在执行。
代码将始终通过第一个if条件,因为源始终是提交按钮。
您需要重新组织逻辑,因为其他条件永远不会被执行。
答案 1 :(得分:2)
JButton
实例的动作侦听器工作正常。循环逻辑存在问题。也就是说,你无限循环。
for(int i = 0;i >= cleartextl; i++){
//do stuff
}
这应该重构如下:
for(int i = 0;i < cleartextl; i++){
//do stuff
}
另外,根据代码的质量判断,我建议您阅读以下教程:
答案 2 :(得分:1)
我试过了代码。第一次测试后clrtoci
总是假的。然后我查看了textaci.getText(),它显然不是null
。我注意到你之前用ciphertext
填充它,因此该字符串可能不是null
。
编辑:
for (int i = 0; i >= cleartextl; i++)
也应为for (int i = 0; i < cleartextl; i++)
这使得它可以在我的机器上响应。
`