当前位置: 首页 > 知识库问答 >
问题:

如何在另一个类中更新JFrame?

华项明
2023-03-14

我想在构造函数外部或从另一个类更新已创建控件的JLabel。在这里,我创建了一个控件,并在构造函数中添加了一些组件。UI是在main中创建的,但是我想更新这个类之外的一些标签。所以我创建了setResult(最终字符串文本,最终字符串路径)来做这样的事情,但它不起作用。。。。

public class Control extends JFrame
{

private static Control control;
static HashMap<String, JLabel> results = new HashMap<String, JLabel>();
public Control(ArrayList<TestCase> tests)
{
    super("WFC Tests");
    setLayout(new GridLayout(tests.size() + 1, 6));

    start.addActionListener(bl);
    JComboBox comBox = new JComboBox(testCategoties);
    loopsField.setText("1");

    JPanel jp = new JPanel();
    jp.setLayout(new FlowLayout());
    jp.add(comBox);
    jp.add(loops);
    jp.add(loopsField);
    jp.add(mainDevice);
    jp.add(mainDeviceText);
    jp.add(refDevice1);
    jp.add(refDeviceText1);
    jp.add(refDevice2);
    jp.add(refDeviceText2);
    jp.add(start);

    add(jp);

    for (TestCase test : tests)
    {
        add(createPane(test));
    }
}
private JPanel createPane(TestCase test)
{
    JPanel jp = new JPanel();
    test.getIterationTextField().setText("0");
    test.getCallTextField().setText("0");
    test.getHoldTextField().setText("0");

    jp.setLayout(new FlowLayout(FlowLayout.LEFT));
    test.getTestCheckBox().setPreferredSize(new Dimension(200, 20));
    jp.add(test.getTestCheckBox(), (int) JCheckBoxMenuItem.CENTER);

    jp.add(test.getLogCheckBox(), JCheckBoxMenuItem.CENTER_ALIGNMENT);
    jp.add(test.getIterationLabel());
    jp.add(test.getIterationTextField());

    if (test.getName().contains("Call"))
    {
        jp.add(test.getCallLabel());
        jp.add(test.getCallTextField());
    }

    if (test.getName().contains("Hold"))
    {
        jp.add(test.getHoldLabel());
        jp.add(test.getHoldTextField());
    }

    test.getResultLabel().setBackground(Color.LIGHT_GRAY);
    test.getResultLabel().setOpaque(true);
    jp.add(test.getResultLabel(), JPanel.RIGHT_ALIGNMENT);
    results.put(test.getPath(), test.getResultLabel());
    return jp;
}
public static void run(final JFrame f, final int width, final int height)
{
    SwingUtilities.invokeLater(new Runnable()
    {
        public void run()
        {
            f.setTitle(f.getClass().getSimpleName());
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(width, height);
            f.setVisible(true);
        }
    });
}
public static void main(String[] args) 
{
    testCases = SanityTest.getSanityTestCases();
    control = new Control(testCases);
    run(control, 1000, 800);

}

我的问题是setResult不起作用。我不知道为什么。有人能帮忙吗?谢谢

public void setResult(final String text, final String path)
{
    SwingUtilities.invokeLater(new Runnable()
    {
        public void run()
        {
            results.get(path).setText(text);
        }
    });
    control.getContentPane().validate();
}
}

共有1个答案

南门飞扬
2023-03-14

我认为问题出在control.getContentPane(). valester();尝试添加control.repaint();

 类似资料:
  • 我试图创建一个,其中有和按钮,并在另一个类中创建了一个方法,该方法将文本设置为。我已经读到,它应该使用多线程,这是更复杂的在我的部分。以下是我的代码: //newclass.java public class NewClass{public void putTextNow(){ NewJFrame nf=new NewJFrame();nf.jlabel1.settext(“ok”);}}

  • 问题内容: 我是java的新手,我被困在这里…我要做的是将一个java文件中arraylist的更改更新为另一个文件中的JPanel。我正在对arraylist进行排序,因此无法手动完成。有什么办法可以让我“告诉” JPanel痛楚吗? 我有进行排序(工作)的BubbleSort.java,有包含JPanel和JFrame类(用于显示未排序的直方图的工作)的Animation.java。 这是家庭

  • 我需要在另一个相关实体更新后对一个实体执行更新。 我有两个实体:和,关系为1:N。两者都有字段。状态取决于所有子状态字段。因此,如果更新了一个,我需要重新计算的新状态并持久化/更新它。 我实现了一个监听器: 监听器在中进行了注释,并且正在正确调用它。但是,在流程完成后,仍然保持旧状态,即使使用正确的新状态调用。

  • 我想做一个应用程序,当我按下AddTask类中的save按钮时,文本输入中的文本将直接更新到Details类中的标签,但我所做的在那里不起作用…有谁能帮我一下吗?

  • 我正在使用齐柏林飞艇0.6.2和火花2.0。 我尝试在循环中执行查询,但效果不是很好。 我需要循环一个数据帧的每一行,大约5000行,并执行一个查询,这将在另一个数据帧中增加一个值。 以下是我的尝试: 我试着从两个数据帧中提取一小部分,但仍然很慢。我觉得我做得不对。 知道如何快速更新数据帧吗?

  • 这是我的php文件...我想在第二个表成功插入后更新第一个表,我要选择并正确插入,但我想更新的行在数据插入后没有更新。 有人能告诉我如何写这在PHP mysqli程序的方式。