From b82bb0a5a65f4be42a244c9a5b58afdcbb874d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eckl=2C=20M=C3=A1t=C3=A9?= <ecklm@sch.bme.hu> Date: Tue, 27 Oct 2015 09:47:43 +0100 Subject: [PATCH] =?UTF-8?q?7.=20labor=20=C3=B6sszes=20feladat=20k=C3=A9sz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A feladatok egy részét szerintem sokkal egyszerűbben is meg lehetett volna csinálni, de legalább már tudjuk mi az, hogy focusListener.Én ebben az esetben tuti nem így csináltam volna. --- .../caesarCode/src/caesarcode/CaesarCode.java | 16 +++++ .../src/caesarcode/caesarFrame.java | 62 +++++++++++++++++-- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/7. labor/caesarCode/src/caesarcode/CaesarCode.java b/7. labor/caesarCode/src/caesarcode/CaesarCode.java index ee5a022..7c16805 100644 --- a/7. labor/caesarCode/src/caesarcode/CaesarCode.java +++ b/7. labor/caesarCode/src/caesarcode/CaesarCode.java @@ -17,4 +17,20 @@ public class CaesarCode { } return s; } + public static String caesarDeCode(String input, char offset) + { + String s = ""; + input=input.toUpperCase(); + offset=Character.toUpperCase(offset); + int numericOffset=(int)offset - (int)'A'; + int len = input.length(); + for(int x = 0; x < len; x++){ + char c = (char)(input.charAt(x) - numericOffset); + if (c < 'A') + s += (char)(input.charAt(x) + (26-numericOffset)); + else + s += (char)(input.charAt(x) - numericOffset); + } + return s; + } } diff --git a/7. labor/caesarCode/src/caesarcode/caesarFrame.java b/7. labor/caesarCode/src/caesarcode/caesarFrame.java index 0e7cb27..5e8ae79 100644 --- a/7. labor/caesarCode/src/caesarcode/caesarFrame.java +++ b/7. labor/caesarCode/src/caesarcode/caesarFrame.java @@ -6,12 +6,16 @@ import java.awt.GridLayout; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; public class caesarFrame extends JFrame{ @@ -20,6 +24,8 @@ public class caesarFrame extends JFrame{ private final JTextField f1, f2; private final JButton btn; + private boolean decode=false; + public caesarFrame() throws HeadlessException { super("SwingLab"); // this.setTitle("SwingLab"); @@ -37,7 +43,11 @@ public class caesarFrame extends JFrame{ for(int i=(int)'A';i<=(int)'Z';i++) chars[i-(int)'A']=(char)i; jcb=new JComboBox(chars); p1.add(jcb); - f1=new JTextField(20); f1.setEnabled(true); p1.add(f1); + f1=new JTextField(20); + f1.addFocusListener(new FocuseLoseListener(false)); + f1.setEnabled(true); + f1.getDocument().addDocumentListener(new InputKeyFieldListener()); + p1.add(f1); btn=new JButton(); btn.setText("Code!"); btn.addActionListener(new OkButtonActionListener()); p1.add(btn); @@ -48,7 +58,8 @@ public class caesarFrame extends JFrame{ add(p2); p2.add(new JLabel("Output:"),BorderLayout.WEST); f2=new JTextField(20); - f2.setEnabled(false); + f2.setEditable(true); + f2.addFocusListener(new FocuseLoseListener(true)); p2.add(f2); //----------------------------------------------- @@ -56,11 +67,52 @@ public class caesarFrame extends JFrame{ setVisible(true); } - private class OkButtonActionListener extends CaesarCode implements ActionListener - { + private class OkButtonActionListener implements ActionListener + { @Override public void actionPerformed(ActionEvent ae) { - f2.setText(caesarCode(f1.getText(), (char)jcb.getSelectedItem())); + if(decode==true) + f1.setText(CaesarCode.caesarDeCode(f2.getText(), (char)jcb.getSelectedItem())); + else + f2.setText(CaesarCode.caesarCode(f1.getText(), (char)jcb.getSelectedItem())); + } + } + + private class FocuseLoseListener implements FocusListener + { + private boolean dir; + public FocuseLoseListener(boolean b) + { + dir=b; + } + + @Override + public void focusGained(FocusEvent fe) { +// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void focusLost(FocusEvent fe) { + decode=dir; + } + + } + + private class InputKeyFieldListener implements DocumentListener + { + @Override + public void insertUpdate(DocumentEvent de) { + f2.setText(CaesarCode.caesarCode(f1.getText(), (char)jcb.getSelectedItem())); + } + + @Override + public void removeUpdate(DocumentEvent de) { + f2.setText(CaesarCode.caesarCode(f1.getText(), (char)jcb.getSelectedItem())); + } + + @Override + public void changedUpdate(DocumentEvent de) { + f2.setText(CaesarCode.caesarCode(f1.getText(), (char)jcb.getSelectedItem())); } } } \ No newline at end of file -- GitLab