Jframe组件添加或删除后怎样更新窗口?

问题描述

我试过用使用Jframe.validate()可以在新增之后正确显示,但删除之后调用Jframe.validate()却不能正确显示。Jframe.add(JComponent);Jframe.validate();Jframe.validate()更新组件之后为什么又不在窗口上同步显示呢?书本上的做法是Jframe.add(JComponent);Jframe.setVisible(false);Jframe.setVisible(true);我的问题是除了上面的做法之外,还有什么比较靠谱的做法呢?麻烦各位指点一下,谢谢哈。 问题补充: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(); //这里插入你认为可行的更新JFrame代码 Jfr.pack(); Scr.nextLine(); Jfr.pack(); //同上 }}代码的意思是每次在命令行输入一行字符即改变一次JFrame。请大家先试一试再说吧,到3楼为止还没有正确的方法啊。

解决方案

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(); } } 也是没有问题的啊
解决方案二:
是要这效果么?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(); } }
解决方案三:
jframe重新pack一下呢
解决方案四:
frame.repaint(); frame.validate(); frame.invalidate(); frame.validate();
解决方案五:
jframe.invalidate();

时间: 2024-07-29 22:28:39

Jframe组件添加或删除后怎样更新窗口?的相关文章

布局-android 将自定义组件添加到xml后,程序崩溃

问题描述 android 将自定义组件添加到xml后,程序崩溃 activity_main中的代码是这样的 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id

winfrom datagridview 控件中 如何在修改、添加和删除后刷新数据?

问题描述 winfrom datagridview 控件中 如何在修改.添加和删除后刷新数据? winfrom datagridview 如何在修改.添加和删除之后如何刷新? 解决方案 http://blog.163.com/huang_ying_lu/blog/static/2699983201052971836350/ 解决方案二: datagridview.Remove这是自动删除一行,应该还有其他属性. 解决方案三: 你是在form上直接进行datagridview修改,删除,添加操作吗

java 关于数据库的操作 删除之后不能自动更新 主窗体要重新运行 才能显示出删除后的结果.

问题描述 主窗体程序...packageframedemo;importjava.awt.BorderLayout;importjava.awt.FlowLayout;importjava.awt.ScrollPane;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.R

Win7系统添加新账户后如何删除旧账户?

  Win7系统添加新账户后如何删除旧账户? 1.打开"开始菜单"选择"控制面板"; 2.在"类别"视图下选择"添加或删除用户账户"; 3.选择希望更改的用户; 4.点击选择"删除帐户" ; 5.选择是否删除用户文件.

dataset更新到数据库-C#中在Dataset中删除几行后无法更新到数据库中

问题描述 C#中在Dataset中删除几行后无法更新到数据库中 foreach (DataRow row in set.Tables["test"].Rows) { if (row[0].ToString() == textBox3.Text) { row.Delete(); } } set.AcceptChanges(); foreach (DataRow row in set.Tables["test"].Rows) { MessageBox.Show(row[

配置-MsSql 发布订阅的时候订阅数据库的数据总是删除后重新添加最新的

问题描述 MsSql 发布订阅的时候订阅数据库的数据总是删除后重新添加最新的 我只是想订阅数据库原有的数据不变,订阅最新添加的数据:但总是给我自动删除所有数据,又重新添加: 哪里配置的问题吗?

js实现对table动态添加、删除和更新的方法_javascript技巧

本文实例讲述了js实现对table动态添加.删除和更新的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999

iOS新添加测试设备后需要更新证书吗?

问题描述 iOS新添加测试设备后需要更新证书吗? 之前弄好了证书和测试设备,然后又加了一个设备,证书需要重新生成吗?? 解决方案 证书不许要重新生成, 更新provisioning profile即可

动态添加组件-android 动态添加了button后,怎么给button设置监听器?

问题描述 android 动态添加了button后,怎么给button设置监听器? android 动态添加了button后,怎么给button设置监听器? 类似微信一样,我收到了语音消息,我在主界面上添加了一个按钮,这个按钮怎么添加监听器?点击后就可以播放我收到的那条消息. 我已经用listview动态添加item(是一个button)了,就是不知道每一个item怎么设置点击后播放不同的声音... private void send(){ if(flag==0)//发送的是文字 { sendC