JComboBoxの状態に応じて,JPanelの中身を切り替える

やりたいことはタイトル通り
コードの解説的なものは,いつか書く
あと,割とクソコード
あと,コード間違ってる気がする(なら公開するな)

コードそのもの

public class PanelPractice extends JFrame{
    public static void main(String[] args) {
        PanelPractice frame = new PanelPractice();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(10, 10, 300, 100);
        frame.setTitle("タイトル");
        frame.setVisible(true);
    }

    private JTextField txt = new JTextField(3);
    private JComboBox comb2 = new JComboBox<String>();

    PanelPractice(){
        JButton button1 = new JButton("Button1");
        JButton button2 = new JButton("Button2");
        JButton button3 = new JButton("Button3");

        JPanel p = new JPanel();
        p.setLayout(new GridLayout());

        JPanel vpanel = new JPanel();
        vpanel.add(txt);

        //JCombo
        String[] data = {"Ky","Sol"};
        JComboBox cmb = new JComboBox<String>(data);
        cmb.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedItem = (String)cmb.getSelectedItem();
                Runnable changeComp = new Runnable() {

                    @Override
                    public void run() {
                        if(Objects.isNull(selectedItem)) {
                            return;
                        }else if(selectedItem.equals("Ky")) {
                            vpanel.remove(comb2);
                            vpanel.add(txt);
                            vpanel.validate();
                            pack();
                        }else {
                            vpanel.removeAll();
                            vpanel.add(comb2);
                            vpanel.validate();
                            pack();
                        }
                    }
                };
                SwingUtilities.invokeLater(changeComp);

            }
        });
        cmb.setSelectedItem(null);

        p.add(cmb);
        p.add(vpanel);
        p.add(button3);

        getContentPane().add(p, BorderLayout.CENTER);
    }
}

(投稿した1分後に,修正部分見つかったよ・・・)