gpt4 book ai didi

java - 如何刷新嵌套在另一个 Jpanel 中的 JPanel?

转载 作者:行者123 更新时间:2023-12-02 03:15:53 25 4
gpt4 key购买 nike

我已将一个 Jpanel 嵌套在另一个 JPanel 中。我想刷新其中一个 JPanel,而不刷新另一个。我有以下代码,我可以使用 repaint() 函数,但是它将更新所有 JPanel,而不仅仅是我想要的 JPanel(Time JPanel)。

我该如何刷新 Time JPanel?让天气 JPanel 保持不变?我希望能够从外部线程执行此操作。

public class MainPanel extends JPanel{

public static JPanel TimePanel = new Time();
public static Weather WeatherPanel = new Weather();

public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
this.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));

TimePanel.setLocation(0, 0);
TimePanel.setSize(new Dimension(500, 300));
this.add(TimePanel);

WeatherPanel.setLocation(0,300);
WeatherPanel.setSize(new Dimension(100, 100));
this.add(WeatherPanel);

//repaint();//Just causes recursion
}
}

最佳答案

你的代码完全错误。 PaintComponent() 方法用于使用 Graphics 对象进行绘画。您永远不应该将组件添加到面板或更改大小,或更改绘制方法中组件的位置。

您无需重写paintComponent()方法。

在类的构造函数中,您可以创建子面板并将它们添加到主面板。像这样的东西:

public class MainPanel extends JPanel
{

public JPanel timePanel = new Time();
public Weather teatherPanel = new Weather();

public MainPanel()
{
this.setBackground(Color.BLACK);
this.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));

this.add(timePanel);
this.add(weatherPanel);
}
}

请注意我如何更改您的变量:

  1. 你不应该使用静态
  2. 变量名称以小写字符开头。

我建议您首先阅读 Swing Tutorial Swing 基础知识。您可以查看如何使用面板部分的工作示例。

关于java - 如何刷新嵌套在另一个 Jpanel 中的 JPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311122/

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