Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JFrame中删除带有ActionListener的按钮_Java_Swing - Fatal编程技术网

Java 从JFrame中删除带有ActionListener的按钮

Java 从JFrame中删除带有ActionListener的按钮,java,swing,Java,Swing,基本上,我有一个扩展JFrame的类,我试图让ActionListener在单击另一个按钮后删除一个按钮,它似乎不起作用 loginButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //Execute when button is pressed Sy

基本上,我有一个扩展JFrame的类,我试图让ActionListener在单击另一个按钮后删除一个按钮,它似乎不起作用

loginButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                //Execute when button is pressed
                System.out.println("Registered existing character click...");
                getContentPane().remove(loginButton);
                frame.remove(newAccountButton);
                frame.revalidate();
                frame.repaint();

                //add(lookUp);
                //add(searchButton);
                bg.setIcon(rsLgn);
//                lookUp.requestFocus();
//                setComponentZOrder(searchButton, 0);
//                setComponentZOrder(lookUp, 0);


            }
        });

编辑:目前,该按钮不可见,因此从技术上讲,我不知道它是否被删除,但System.out.println肯定仍在输出“已注册现有角色单击…”的原始消息。

这听起来好像你真的想使用CardLayout交换视图。我知道如果这是我的GUI,我想改变GUI在状态改变时的视图,那就是我要做的。嗯。。。。也许我没有想到,因为我已经通过像素位置放置了按钮。。。它是否应该自动删除一个按钮面板,然后添加另一个新按钮?
“…因为我已经通过像素位置放置了按钮”
——一个常见的新手错误。虽然一开始看起来创建复杂Swing GUI的最简单方法是使用空布局和绝对位置放置它们,但您越是这样做,更重要的是,您就越需要维护GUI,您会越来越清楚地看到,这绝对是创建GUI最糟糕的方式,因为这样创建的GUI是死板的,很难更改。更好的方法是使用布局管理器来帮助定位和调整组件的大小。问题是,我想使用图片作为“背景”,并将按钮放置在背景中的按钮上,我看到的唯一正确的方法是使用绝对定位…另外,我尝试添加CardLayout,但是由于某些原因,我无法将JPanel的大小/边界设置为帧的大小,我尝试使用
panel.setBounds(this.getBounds())但它不起作用。。。