Java 打包JMeterGUI
我正在尝试使用 当创建了太多的Java 打包JMeterGUI,java,swing,user-interface,jmeter,pack,Java,Swing,User Interface,Jmeter,Pack,我正在尝试使用 当创建了太多的JComponent对象时,我希望我的AbstractSamplerGui滚动。如果我用简单的对象创建面板,我没有问题。。面板将精细滚动: import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; ... public final class MyGui extends AbstractSamplerGui
JComponent
对象时,我希望我的AbstractSamplerGui
滚动。如果我用简单的对象创建面板,我没有问题。。面板将精细滚动:
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);
}
...
import org.apache.jmeter.gui.util.VerticalPanel;
导入org.apache.jmeter.samplers.gui.AbstractSamplerGui;
...
公共最终类MyGui扩展了AbstractSamplerGui{
公共MyGui(){
最终垂直面板=新垂直面板();
对于(int i=0;i<100;i++){
添加(新JLabel(“测试”));
panel.add(新的JTextArea());
}
添加(面板);
}
...
但是,当我给JTextArea
对象一个非默认大小newjtextarea(30,30))
时,滚动条没有注意到页面变大了。这意味着有一半的项目超出了面板(无法访问)
我知道在添加项目后,您应该在JFrame
上调用pack
,但我不知道如何在这里这样做。AbstractSamplerGui
扩展了JPanel
,它没有pack
方法
我尝试使用JMeter API查找JFrame
,但没有成功。我也不认为使用SwingUtilities::getRoot
可以找到根框架,因为这项工作是在JPanel
的构造函数中完成的
任何帮助都将不胜感激
我刚刚用JPanel panel=newjpanel()替换了panel
是的,但是我们不知道AbstractSamplerGui在做什么。它可能对组件的宽度有一些限制
我也不认为我可以使用SwingUtilities::getRoot找到根框架,因为这项工作是在JPanel的构造函数中完成的
您可以尝试向面板中添加AncestorListener
。将面板添加到可见GUI时,应生成ancestorAdded
事件。然后,您应能够获取父窗口,以便对其进行打包:
@Override
public void ancestorAdded(AncestorEvent e)
{
JComponent component = e.getComponent();
Window window = SwingUtilities.windowForComponent(component);
window.pack();
}
我刚刚用JPanel panel=newjpanel()替换了panel
是的,但是我们不知道AbstractSamplerGui在做什么。它可能对组件的宽度有一些限制
我也不认为我可以使用SwingUtilities::getRoot找到根框架,因为这项工作是在JPanel的构造函数中完成的
您可以尝试向面板中添加AncestorListener
。将面板添加到可见GUI时,应生成ancestorAdded
事件。然后,您应能够获取父窗口,以便对其进行打包:
@Override
public void ancestorAdded(AncestorEvent e)
{
JComponent component = e.getComponent();
Window window = SwingUtilities.windowForComponent(component);
window.pack();
}
为什么有人使用swing?
-因为swing易于使用和自定义。对swing缺乏了解并不是抱怨的理由。问题在于您的自定义代码,而不是swing。谁知道您的代码为什么不起作用。“VerticalPanel”是一个非标准类,我不知道它是做什么的。布局问题可能就在那里。@camickr its更像是一个有趣的注释:p也是VerticalPanel是JMeterAPI的一部分。我将添加imports@camickr我刚刚用JPanel panel=new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.Y_轴)替换了panel
)
我也看到了同样的问题。为什么有人使用swing?
-因为swing易于使用和自定义。缺乏swing方面的知识并不是抱怨它的理由。问题在于您的自定义代码,而不是swing。谁知道您的代码为什么不起作用。“VerticalPanel”是一个非标准类,我不知道它是做什么的。布局问题可能就在那里。@camickr its更像是一个有趣的注释:p也是VerticalPanel是JMeterAPI的一部分。我将添加imports@camickr我刚刚用JPanel panel=new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.Y_轴)替换了panel
);
我也看到了同样的问题。只是尝试了这个,不幸的是它没有解决问题。我不确定JMeter在引擎盖下做了什么导致了这种行为;也许包装不是我问题的真正原因……我会继续调查。感谢您的回复:)只是尝试了这个,不幸的是它没有解决问题。我不确定JMeter在引擎盖下做的事情导致了这种行为;也许包装不是我问题的真正原因……我会继续调查。感谢您的回复:)