gpt4 book ai didi

java - 如何在复合 SWT Java 中居中标签

转载 作者:行者123 更新时间:2023-11-30 06:18:56 25 4
gpt4 key购买 nike

我已经创建了一个 Java SWT 应用程序,并且我有一个包含尺寸不时变化的标签的组合。标签显示图像并有监听器。如何使标签在复合 Material 中居中?

我创建了一个 shell:

Composite conteinerBox = new Composite(shell, SWT.NONE);
conteinerBox.setBackground(SWTResourceManager.getColor(SWT.COLOR_RED));
conteinerBox.setBounds(342, 10, 410, 384);

Label imageContainer = new Label(conteinerBox,SWT.NONE);
imageContainer.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_DARK_SHADOW));

我用过这个函数:

private void openImage() {

if(isAnImage(file.getPath())){
System.out.println("FILE OPEN : " + file.getPath());
Image image = getImage(file.getPath());


//attach image

imageContainer.setSize(image.getBounds().width,image.getBounds().height);
imageContainer.setImage(image);

//set image mouse listener
imageContainer.addMouseMoveListener(new MouseMoveListener() {

@Override
public void mouseMove(MouseEvent event) {

x_mouse_cordinate.setText("" + event.x);
y_mouse_cordinate.setText("" + event.y);

}
});
}

包含图像的标签附加在点 (0,0) 上,但我想将其置于复合 Material 的中心......有什么建议吗?

最佳答案

除非必要,否则请不要使用setBoundssetSize,请改用Layout

请阅读:

Understanding Layouts in SWT

下面是一些将 Label 水平居中的示例代码:

public static void main(String[] args)
{
final Display display = new Display();
Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new GridLayout(1, false));

final Label centered = new Label(shell, SWT.NONE);
centered.setText("Small text");
centered.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true));

Button changeText = new Button(shell, SWT.PUSH);
changeText.setText("Change text");
changeText.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event arg0)
{
centered.setText("Loooooooooooooooooooong text");
centered.getParent().layout();
}
});


shell.pack();
shell.setSize(600, 200);
shell.open();
while (!shell.isDisposed())
{
while (!display.readAndDispatch())
{
display.sleep();
}
}
}

看起来像这样:

enter image description here

关于java - 如何在复合 SWT Java 中居中标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23867333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com