gpt4 book ai didi

java - 用户输入导致 frame.getContentPane.removeAll() 停止工作

转载 作者:行者123 更新时间:2023-11-30 11:19:36 24 4
gpt4 key购买 nike

在一个 JFrame 中,我用另一个 JPanel 替换了一个 Jpanel 。

package testing;

import java.io.*;
import java.util.*;
import java.security.*;
import javax.xml.bind.DatatypeConverter;
import java.lang.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Testing extends JPanel {

JLabel jl;
ImageIcon icon;
Point pointer;


public static void main(String[] args) {

JFrame jf = new JFrame();

JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();

JLabel jl1 = new JLabel("Hey1");
JLabel jl2 = new JLabel("Hey2");

jp1.add(jl1);
jp2.add(jl2);

jf.add(jp1);

jf.setVisible(true);
jf.pack();

Scanner myScanner= new Scanner(System.in);

int x = myScanner.nextInt(); // the line causes the code to not work ,

// what is happening

jf.getContentPane().removeAll();

jf.add(jp2);


}
}

奇怪的是代码在我尝试读取用户输入时停止工作

int x = myScanner.nextInt();

代码:jf.getContentPane().removeAll(); 停止工作,我无法删除当前的 JPanel 并添加新的 JPanel

我需要在替换 JPanel 之前读取用户输入,我该如何解决这个问题??

注意:即使在我输入内容后,jf.getContentPane().removeAll() 仍然不起作用

最佳答案

使用validate() 来布局容器的子组件。还有 pack() Window 之前setVisible().

或者,使用 CardLayout改变 View 和JTextField收集用户输入。

经测试:

import java.util.*;
import java.awt.*;
import javax.swing.*;

public class Testing extends JPanel {

JLabel jl;
ImageIcon icon;
Point pointer;

public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JLabel jl1 = new JLabel("Hey1");
JLabel jl2 = new JLabel("Hey2");
jp1.add(jl1);
jp2.add(jl2);
jf.add(jp1);
jf.pack();
jf.setVisible(true);
Scanner myScanner = new Scanner(System.in);
int x = myScanner.nextInt(); // the line causes the code to not work ,
jf.getContentPane().removeAll();
jf.add(jp2);
jf.validate();
}
}

关于java - 用户输入导致 frame.getContentPane.removeAll() 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com