В JFrame отображается только один компонент

В качестве улучшения моего проекта по шифрованию я решил сделать небольшой графический интерфейс. Однако, когда я запускаю программу, на экране появляется только верхний элемент, и он, кажется, скрывает другие, хотя я не могу проверить. Кто-нибудь знает почему?



Ниже мой код полностью, кромеe() а такжеd() потому что они просто шифруют строку и не имеют ничего общего с графическим интерфейсом. Я также хотел бы как можно быстрее ускорить его, не редактируя шифрование, просто сделать его максимально возможным.

@SuppressWarnings("serial")
public class EncDecExample extends JFrame implements ActionListener {
    final static JPanel top = new JPanel();
    final static JPanel mid = new JPanel();
    final static JPanel bot = new JPanel();
    final static JTextField in = new JTextField(10);
    final static JTextField out = new JTextField(10);
    final static JButton enc = new JButton("Encrypt");
    final static JButton dec = new JButton("Decrypt");
    final static JFrame f = new JFrame("Encryption/decryption");

    public static void main(String[] args) {
//        EncDec.exampleImplement();

        f.setSize(500, 500);
        f.setResizable(false);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        out.setEditable(false);
        out.setText("Hello");
        in.setVisible(true);
        out.setVisible(true);
        enc.setVisible(true);
        dec.setVisible(true);
        top.add(in);
        mid.add(enc);
        mid.add(dec);
        bot.add(out);
        f.add(top);
        f.add(mid);
        f.add(bot);
        f.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == enc && !in.getText().equalsIgnoreCase("")) {
            out.setText(EncDec.e(in.getText(), 5));
        }
        else if(e.getSource() == dec && !in.getText().equalsIgnoreCase("")) {
            out.setText(EncDec.d(in.getText()));
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос