我试过用使用Jframe.validate()可以在新增之后正确显示,但删除之后调用Jframe.validate()却不能正确显示。
Jframe.add(JComponent);
Jframe.validate();
Jframe.validate()更新组件之后为什么又不在窗口上同步显示呢?
书本上的做法是
Jframe.add(JComponent);
Jframe.setVisible(false);
Jframe.setVisible(true);
我的问题是除了上面的做法之外,还有什么比较靠谱的做法呢?
麻烦各位指点一下,谢谢哈。
[code="java"]import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.*;
public class Test{
public static void main(String[] args) {
Scanner Scr = new Scanner(System.in);
JButton Jbt = new JButton("OK");
JFrame Jfr = new JFrame();
Jfr.setSize(200, 200);
Jfr.setLocationRelativeTo(null);
Jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Jfr.setVisible(true);
Scr.nextLine();
Jfr.setSize(250, 250);
Jfr.repaint();
Scr.nextLine();
Jfr.add(Jbt, BorderLayout.CENTER);
Jfr.setSize(100, 100);
Jfr.repaint();
}
} [/code]
[size=x-large]也是没有问题的啊[/size]
[code="java"]jframe.invalidate();
[/code]
[code="java"]
frame.repaint();
frame.validate();
frame.invalidate();
frame.validate();
[/code]
jframe重新pack一下呢
是要这效果么?
[code="java"]import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test{
public static void main(String[] args) {
Scanner Scr = new Scanner(System.in);
JButton Jbt = new JButton("OK");
JFrame Jfr = new JFrame();
Jfr.setSize(200, 200);
Jfr.setLocationRelativeTo(null);
Jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Jfr.setVisible(true);
Scr.nextLine();
Jfr.setSize(250, 250);
Jfr.repaint();
Scr.nextLine();
Jfr.setSize(100, 100);
Jfr.repaint();
}
} [/code]