用java编写的swing程序。如何在主界面中实现刷新的功能,就是让主界面的组件刷新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java编写的swing程序。如何在主界面中实现刷新的功能,就是让主界面的组件刷新相关的知识,希望对你有一定的参考价值。

重新加载,先调用MainPanel的removeAII(),再重新添加,最后validate()。或者是MainFrame.getContentPane.removeAII(),总之要remove掉再添加,再validate 参考技术A 让主界面刷新,你可以调用的主窗体的paintAll方法,
很多时候都吧,update().repaint().paintComponents()这些方法一起使用,追问

我现在是定义了一个主窗体MainFrame类,然后又定义了一个主面板类MainPanel,将主面板添加到主窗体中。在面板上显示了很多的标签,标签上的数据都是从数据库中读取的。当我从改变数据库中的数据的时候想要动态的改变标签上的内容,如何实现刷新。我现在就是要解决这个问题,希望能得到帮助,谢谢,能帮助我的话我加分。

追答

你的意思是只要数据库的数据变了,就该表这个panel的显示内容?
如果是这样的话:首先--我没有这么做过,因为java还没有直接监听数据库
我可以给你一个建议:就是当你需要修改数据库的时候就(是你本程序)取读一次数据库,或者移除你要删除的控件,
如果不是你这个程序去修改的,这个就有一点麻烦,可以让其他程序告诉你这个程序数据库修改了,用socket,或者用消息,只要能得到消息也就可以知道该移除什么
最不推荐的是没隔几分钟去读数据库一次。
由于我没有做过这种,我就只能给出这几种建议

追问

我现在是启动一个线程,访问数据库,改变面板显示的类容,但是感觉这样不好,不过我实在想不出其他很好的办法了。不过还是谢谢你的建议。

追答

你的意思就是说不是你写的这个程序去控制修改数据库,那什么什么样的程序去修改呢?让他与你通信,用socket。这样就能最及时修改,也减少数据库的压力

追问

socket我不太熟练,用的不多,你能给我一个例子程序吗?

追答

..............

参考技术B 在顶层JFrame调用repaint()

运用Swing以便在Java中实现简单的图形界面

Swing 是一个为 Java 设计的图形用户界面(GUI)工具包,同时也是 Java 基础类的一部分。本篇文章将运用 Swing 实现简单的图形界面,并输出 “Hello, World!”与“Welcome to Java!”。

HelloWorld.java 的代码如下所示:

 1 import javax.swing.*;
 2 
 3 public class HelloWorld{
 4     public static void main(String args[]){
 5         /*
 6         JFrame.setDefaultLookAndFeelDecorated(true);
 7         据说可以确保漂亮的外观风格,但直接使用时并不美观
 8         */
 9         JFrame frame=new JFrame("Hello, World!");
10         JLabel label=new JLabel("Welcome to Java!");
11         JPanel panel=new JPanel();
12         label.setHorizontalAlignment(SwingConstants.CENTER);
13         label.setVerticalAlignment(SwingConstants.CENTER);
14         label.setBounds(0,75,400,20);
15         panel.add(label);
16         panel.setLayout(null);
17         frame.getContentPane().add(panel);
18         frame.pack();
19         frame.setSize(400,200); 
20         frame.setVisible(true);
21         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22     }
23 }

使用 javac 命令将其编译为 HelloWorld.class 后执行结果如下图所示 (Windows 10 环境下):

如果将

JFrame.setDefaultLookAndFeelDecorated(true);

一句取消注释的话,则执行结果如下图所示 (Windows 10 环境下):

可以注意到的是源代码有一句定义窗体大小的语句:

frame.setSize(400,200);

但在这两张图片中,前者大小只有 386*193 像素,后者则正好是 400*200 像素。setSize 语句具体是依据何种情况定义大小还需要继续学习。

以上是关于用java编写的swing程序。如何在主界面中实现刷新的功能,就是让主界面的组件刷新的主要内容,如果未能解决你的问题,请参考以下文章

运用Swing以便在Java中实现简单的图形界面

编写了Java GUI的一个登录框,如何实现跳转,错误时出现提示框,登陆成功切换为下一界面

在 Swing 中实现后退按钮功能 [重复]

在主详细信息界面中实现类似“全部”过滤器的 iTunes

Java学习之图形化界面(Swing基础)

用java编写一个“我的日记”的界面并使其实现写日记的功能, 最好含有登陆界面的