当前位置: 首页 > 面试题库 >

使用用户指定的计时器更新gui中的JPanel和属性?

葛承教
2023-03-14
问题内容

所以我有这节课。我们将其称为ProcessBox。我还有一个名为Process的类,该类具有一个ProcessBox作为成员变量。然后,在我的主要方法中,我有一个Process对象的ArrayList(每个对象都有自己的ProcessBox)。我该如何做,以便我的ProcessBox每隔x
ms更新一次(其中x是用户指定的。我已经有输入x的监听器完成了)。下面是我的ProcessBox类。这就是我希望每隔x ms重绘一次(除了它们的整个列表)。

import java.awt.*;

import javax.swing.*;
import javax.swing.border.LineBorder;

import java.util.*;

public class ProcessBox extends JPanel {
    GridBagLayout gbc_panel;

    public ProcessBox(Process p) {
        super(new GridBagLayout());
        gbc_panel = new GridBagLayout();
        gbc_panel.columnWidths = new int[] { 0, 0, 0 };
        gbc_panel.rowHeights = new int[] { 0, 0, 0, 0, 0, 0 };
        gbc_panel.columnWeights = new double[] { 0, 0, Double.MIN_VALUE };
        gbc_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0,
                Double.MIN_VALUE };
        super.setLayout(gbc_panel);


        setPreferredSize(new Dimension(110, 110));
        setMinimumSize(new Dimension(110, 110));
        setAlignmentX(Component.LEFT_ALIGNMENT);
        setBorder(new LineBorder(new Color(0, 0, 0), 1));
        setSize(new Dimension(110, 110));

        String name = p.getName();
        int priority = p.getPriority();
        int minPriority = p.getMinPriority();
        ArrayList<Integer> times = p.getTime();
        Random r = new Random(System.currentTimeMillis());
        setBackground(new Color(r.nextInt(255 - 210) + 210,
                r.nextInt(255 - 210) + 210, r.nextInt(255 - 210) + 210));

        JLabel lblNewLabel = new JLabel("ID:");
        GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
        gbc_lblNewLabel.gridheight = 2;
        gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
        gbc_lblNewLabel.gridx = 0;
        gbc_lblNewLabel.gridy = 0;
        add(lblNewLabel, gbc_lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel(name);
        GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
        gbc_lblNewLabel_1.gridheight = 2;
        gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 0);
        gbc_lblNewLabel_1.gridx = 1;
        gbc_lblNewLabel_1.gridy = 0;
        add(lblNewLabel_1, gbc_lblNewLabel_1);

        JLabel lblNewLabel_2 = new JLabel("Priority:");
        GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
        gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5);
        gbc_lblNewLabel_2.gridx = 0;
        gbc_lblNewLabel_2.gridy = 2;
        add(lblNewLabel_2, gbc_lblNewLabel_2);

        JLabel lblNum = new JLabel(Integer.toString(priority));
        GridBagConstraints gbc_lblNum = new GridBagConstraints();
        gbc_lblNum.insets = new Insets(0, 0, 5, 0);
        gbc_lblNum.gridx = 1;
        gbc_lblNum.gridy = 2;
        add(lblNum, gbc_lblNum);

        JLabel lblNewLabel_3 = new JLabel("Min:");
        GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints();
        gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5);
        gbc_lblNewLabel_3.gridx = 0;
        gbc_lblNewLabel_3.gridy = 3;
        add(lblNewLabel_3, gbc_lblNewLabel_3);

        JLabel lblMp = new JLabel(Integer.toString(minPriority));
        GridBagConstraints gbc_lblMp = new GridBagConstraints();
        gbc_lblMp.insets = new Insets(0, 0, 5, 0);
        gbc_lblMp.gridx = 1;
        gbc_lblMp.gridy = 3;
        add(lblMp, gbc_lblMp);

        JLabel lblTimeSlice = new JLabel("Slice:");
        GridBagConstraints gbc_lblTimeSlice = new GridBagConstraints();
        gbc_lblTimeSlice.insets = new Insets(0, 0, 0, 5);
        gbc_lblTimeSlice.gridx = 0;
        gbc_lblTimeSlice.gridy = 4;
        add(lblTimeSlice, gbc_lblTimeSlice);

        JLabel lblLeft = new JLabel(Integer.toString(times.get(0)));
        GridBagConstraints gbc_lblLeft = new GridBagConstraints();
        gbc_lblLeft.gridx = 1;
        gbc_lblLeft.gridy = 4;
        add(lblLeft, gbc_lblLeft);
        setVisible(true);

}

}


问题答案:


如何使用Swing计时器

开始,并查看示例,例如MarqueeTest或AnimationTest



 类似资料:
  • 问题内容: 这是在NetBeans 6.5 Java 6中。 我在NetBeans GUI设计器中具有以下层次结构: 题: JPanel Y与JPanel X相同,因此我想在两个地方都简单地重用JPanel X,但是如何在GUI Builder中执行此操作? 尝试次数: 我尝试复制粘贴JPanel X,但是它会创建完整的“深层”副本(JPanel X1等),从而复制了JPanel X中的所有内容。

  • 问题内容: 我正在尝试为JPanel的右上角到左下角的2个框设置动画。对于动画,我使用了Swing Timer和。问题是当我单击开始按钮时。它仅设置动画并移动蓝色框,而不移动红色框。 这是代码: 问题答案: 因此,所有在类级别声明的变量都是共享的。您的第一个调用将设置它们,然后第二个调用将完全覆盖以前的值。您需要将它们从类变量更改为动画的参数。 创建一个新类,该类实现并保存该类中的变量。 例如,

  • 问题内容: 我在这段代码上遇到了麻烦。 我正在使用一个随机数启动一个计时器,并且我想每秒倒数一次更新JLabel。但是我还没有弄清楚该怎么做,因为计时器触发的唯一侦听器位于它的末尾(我知道)。 这是代码: 问题答案: 我不太了解您为什么使用随机数的问题,但以下是一些观察结果: 我想每秒钟更新一次带有倒计时的JLabel。 然后,您需要将计时器设置为每秒触发一次。因此,计时器的参数是1000,而不是

  • 我想在我的应用程序中添加一个时钟,它告诉你已经做了多长时间的任务。为了简化它,我包含了一个计数器,它在新线程中每秒递增一次,并用计数器号更新标签“Set Timer”。为此,我在我的.fxml文件中有一个标签fx:id=“settimer”,并将其导入到我的类中。 我试过很多方法来解决我的问题,但我还没有找到正确的方法。我对我想做什么的想法应该很清楚,如果有人能帮助我,我会很高兴的。我的问题是更新

  • 我有一个带有卡布局组件的JFrame。我正在使用卡布局在应用程序执行的不同时刻在不同的JPanel之间切换。在某些时候,我正在使用摇摆工人对象来生成一些XML文件。在这段时间里,我想在我的窗口中显示另一个JPanel,告诉用户等待。在这个JPanel上,我想在3个标签之间切换。 吉列布尔1会说:“请稍候。 吉拉贝尔2会说:“请稍候..” 吉拉贝尔3会是:“请稍候...” 现在代码如下: Swing

  • 我是java语言新手,我正在尝试创建一个GUI,它有JComboBox,允许用户选择其中一个选项,并根据所选选项,通过添加更多文本字段来更新面板。目前我面临的一个问题是,如果我选择(选项1),面板不会更新,它应该显示5个文本字段及其标签。 我的问题是:如何更新面板以根据用户从JComboBox中选择的选项添加更多文本字段? 此外,我还面临另一个问题,我无法找到设置JFrame大小的方法 这是我的代