如何刷新 Jframe
时间: 2024-02-20 20:00:04 浏览: 145
要刷新 JFrame,可以使用 `repaint()` 方法。 `repaint()` 方法会使 JFrame 重新绘制并更新其内容。下面是一个示例,演示如何刷新名为 `frame` 的 JFrame:
```
frame.repaint();
```
这将会使 `frame` 重新绘制并更新其内容。需要注意的是,`repaint()` 方法并不会立即更新 JFrame,而是会在下一次绘制循环中更新。如果你需要立即更新 JFrame,可以使用 `revalidate()` 方法,该方法会强制重新计算 JFrame 的布局并更新其内容。例如:
```
frame.revalidate();
frame.repaint();
```
这将会强制重新计算 `frame` 的布局并更新其内容。
相关问题
Java 按钮点击事件之刷新JFrame
要刷新 JFrame 上的组件,可以调用 `repaint()` 方法。当 `repaint()` 被调用时,它将通知系统重新绘制 JFrame 上的所有组件。
下面是一个简单的示例代码,展示如何在 Java 中实现按钮点击事件以刷新 JFrame:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RefreshFrameExample extends JFrame {
private JButton refreshButton;
public RefreshFrameExample() {
setTitle("Refresh Frame Example");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
refreshButton = new JButton("Refresh");
refreshButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
});
add(refreshButton, BorderLayout.SOUTH);
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("Refreshed at " + System.currentTimeMillis(), 100, 100);
}
public static void main(String[] args) {
RefreshFrameExample example = new RefreshFrameExample();
example.setVisible(true);
}
}
```
在这个示例中,我们创建了一个 JFrame,其中包含一个 JButton。当用户单击按钮时,我们调用 `repaint()` 方法刷新 JFrame 上的组件。在 `paint()` 方法中,我们绘制一条消息来显示 JFrame 上次刷新的时间。
jframe 动态刷新
要让JFrame动态刷新,可以使用JPanel作为JFrame的容器,并在JPanel中重写paintComponent()方法。在这个方法中,可以实现自己需要的动态刷新逻辑,例如更新画面、绘制动画等。然后使用Timer类定时调用repaint()方法,使得JPanel可以定时刷新,从而实现动态效果。
以下是一个简单的示例代码:
```java
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class DynamicJFrame extends JFrame {
private static final long serialVersionUID = 1L;
public DynamicJFrame() {
super("Dynamic JFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 在这里写绘图逻辑
g.drawRect(10, 10, 50, 50);
}
};
getContentPane().add(panel);
Timer timer = new Timer(1000 / 60, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.repaint();
}
});
timer.start();
setSize(400, 300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DynamicJFrame();
}
}
```
在这个示例中,我们创建了一个JPanel作为JFrame的容器,并在JPanel中重写了paintComponent()方法,绘制了一个矩形。然后使用Timer类定时调用repaint()方法,使得JPanel可以定时刷新,从而实现动态效果。
阅读全文