我正在尝试使用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
的构造函数内完成的。
任何帮助将不胜感激!
答案 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();
}