最简单的说,我试图使用组件的宽度来设置其父容器的大小.但是,为组件返回的宽度偏差约4个像素.
更多细节:我有一个对话框,其子面板水平分布在其中间.该对话框应始终与此子面板列表一样宽,并在列表太长时使用滚动条.我尝试使用1个子面板虽然开始.无论我做什么,返回的子面板的大小总是错误大约4个像素.我只能在子面板右侧看到一个非常恼人的4像素间隙,使我的对话看起来很可怕.随着更多子面板的添加,效果明显增加.
我尝试使用什么来获得宽度:
sup-panel.getSize().width;
sub-panel.getBounds().width;
sub-panel.getWidth();
sub-panel.getPreferredSize().width;
Run Code Online (Sandbox Code Playgroud)
所有都返回相同的错误值.
我尝试过让其表现的其他事情:
parent.validate();
parent.repaint();
parent.doLayout();
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.这是故意的吗?我错过了尺寸背后的一些概念吗?它似乎是一致的,但如果我能在某处记录下来这将是很好的.
仅供参考:我使用的是java 1.3(支持遗留应用程序)
注意:这不是让窗口调整大小的问题,这部分发生得很好.并且子面板的大小似乎已正确设置,因为对其大小的更改将反映在为我的代码返回的值中.这些值总是略微偏离.
注意2:在父容器上调用pack()会使窗口看起来像我想要的那样,但它对我来说并不适用于所有场景,因为最终在存在足够的子面板之后需要存在滚动条.在这种情况下,pack()将简单地使我的对话框超宽,并使滚动条无用.
编辑:我已经解决了我的问题.相当令人尴尬的是,我所有的子面板都没有像它们应该的那样均匀的宽度.有两种解决方案可行.强制它们都是统一的,这可能很棘手,这取决于你对布局有多好.另一个是总结我希望看到的前n个面板的各个宽度.请注意,要使此解决方案有效,我必须为每个子组件的宽度添加额外的+1.不知道为什么,但我已经用各种边框和布局测试了它,它非常一致; 我想在某些地方可能还有一个额外空间的像素,我对此并不够思考.但重要的是它现在完美运作.这是一个数学样本(抱歉需要演员的旧学校无类型集合,Java 1.3):
int width = 0;
for(int i = 0; i < MAX_VISIBLE_PANELS; i++)
{
width += ((SubPanel)panelList.get(i)).getWidth();
width ++;//extra pixel per panel
}
Run Code Online (Sandbox Code Playgroud) 首先,我是一名Python初学者,具有面向对象的典型C++/Java背景.
我确信我正在努力尝试使用Python,目前我还喜欢它.我遇到的一个问题是找到一个好的mp3模块.
我试过TkSnack,它安装并运行良好,没有任何错误(只要我的音频设备不忙)但它实际上永远不会产生声音,它什么也没做......我上网寻求帮助,感到很失望随着文件的数量.
所以我决定改变.我尝试过PyMad,因为它也在Ubuntu的标准存储库中.关于此的文档甚至更少,但我可以让它发出声音.唯一的问题是它需要一个循环来不断地写/播放音频缓冲区.这使得处理播放控制(在我看来)特别毛茸茸,因为我必须在一个单独的线程或进程中运行它,并以某种方式控制暂停的搜索位置等.这对于我使用Python的原因来说有点太低了.我喜欢TkSnack的简单性,因为它的简单命令如"mysound.play()"或"mysound.pause()"而不是控制循环.
我也查看了pyMedia,看起来它是最新的文档,但我无法在我的机器上安装它.当运行"python setup.py build"命令时,我得到一个"gcc退出,值为1"错误或类似的东西.
所以我正在寻找任何建议或帮助其中一个模块,或一个完全不同的模块,高水平,易于使用的MP3(也可能是其他格式)我试图有基本的播放控制(暂停,停止,跳过,寻求)我也可能最终流媒体文件(如果我到达那里).
编辑:我喜欢Gstreamer的python绑定,但这是一个跨平台的解决方案吗?我忘记提到这是一个要求.但我总是将GStreamer与Linux联系起来,这会在其他操作系统上运行吗?
编辑:维基百科说是的.
我在OSX 10.9.5上使用IntelliJ 13.0.2,使用java 1.8.尝试在IntelliJ中运行单元测试时出现此错误.当我在命令行通过maven运行编译或测试时,它运行正常.
我已进入文件 - >其他设置 - >默认设置 - >编译器 - >注释处理器并取消选中启用注释处理.我也尝试了选中启用注释处理,并保留选中的默认值.
我们正在运行我们的测试
@RunWith(MockitoJUnitRunner.class)
Run Code Online (Sandbox Code Playgroud)
它找不到的Annotation处理器是org.mapstruct.ap.MappingProcessor.我不知道从哪里得到它,它不在我们的进口中.也许是Mockito的依赖?
我有大量的文件来排序所有在一些可怕的约定中命名的文件.
这里有些例子:
(4)_mr__mcloughlin ____.txt
12__sir_john_farr ____.txt
(b)mr__chope ____.txt
dame_elaine_kellett-bowman ____.txt
dr__blackburn ______.txt
这些名称应该是不同的人(发言者).另一个IT部门的某个人使用一些脚本从大量的XML文件中生成了这些文件,但是如你所见,命名是不可思议的愚蠢.
我需要用每个人的多个文本文件对数万个这些文件进行排序; 每个都有一些愚蠢的东西使文件名不同,无论是更多的下划线或一些随机数.他们需要按说话者排序.
使用脚本执行大部分工作会更容易,然后我可以返回并合并应该使用相同名称或其他内容的文件夹.
我有很多方法可以考虑这样做.
我打算使用Perl,但如果它值得,我可以尝试一种新语言.我不知道如何将目录中的每个文件名一次一个地读入字符串以解析为实际名称.我不完全确定如何在perl中使用正则表达式进行解析,但这可能是可谷歌的.
对于排序,我只是要使用shell命令:
`cp filename.txt /example/destination/filename.txt`
Run Code Online (Sandbox Code Playgroud)
但只是因为这就是我所知道的所以它是最简单的.
我甚至没有关于我要做什么的伪代码的想法,所以如果有人知道最好的行动顺序,我的耳朵.我想我正在寻找很多帮助,我对任何建议持开放态度.许多人感谢任何可以提供帮助的人.
B.