装JMeter Gui

时间:2016-10-07 15:01:11

标签: java swing user-interface jmeter pack

我正在尝试使用this API

为我的JMeter插件制作GUI

我希望在创建了太多AbstractSamplerGui个对象时滚动JComponent。如果我创建一个包含简单对象的面板,我没有问题..面板将滚动正常:

import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;

...

public final class MyGui extends AbstractSamplerGui {
    public MyGui() {
        final VerticalPanel panel = new VerticalPanel();
        for (int i = 0; i < 100; i++) {
            panel.add(new JLabel("TEST"));
            panel.add(new JTextArea());
        }
        add(panel);
    }
    ...

但是,当我为JTextArea个对象提供非默认大小new JTextArea(30, 30))时,滚动条不会注意到该页面是否更大..这意味着一半的项目延伸到小组(无法到达)。

我了解您在添加项目后应该在pack上致电JFrame,但我不知道如何在此处执行此操作。 AbstractSamplerGui扩展了JPanel,但没有pack方法。

我尝试使用JMeter API找到JFrame,但我没有运气。我也不认为我可以使用SwingUtilities::getRoot找到根框架,因为这项工作是在JPanel的构造函数内完成的。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

  

我刚用JPanel面板= new JPanel();

替换了面板

是的,但我们不知道AbstractSamplerGui在做什么。它可能对组件的宽度有一些限制。

  

我也不认为我可以使用SwingUtilities :: getRoot找到根框架,因为这项工作是在JPanel的构造函数内完成的。

您可以尝试在面板中添加AncestorListener。将面板添加到可见GUI时,应生成ancestorAdded事件。然后你应该能够获得父窗口,以便你可以打包它:

@Override
public void ancestorAdded(AncestorEvent e)
{
    JComponent component = e.getComponent();

    Window window = SwingUtilities.windowForComponent(component);

    window.pack();
}