Java 正在截断StyledLabel上的文本

Java 正在截断StyledLabel上的文本,java,swing,awt,swt,Java,Swing,Awt,Swt,所有,提前感谢您的帮助 我正在混合一些SWT和swing。代码如下: Composite sessionComposite = new Composite(parent, SWT_EMBEDDED | SWT_BORDER); sessionComposite.setLayout(0,0,64,64); Frame frame = new Frame(sessionComposite); frame.setLayout(new BorderLayout()); JPanel panel =

所有,提前感谢您的帮助

我正在混合一些SWT和swing。代码如下:

Composite sessionComposite = new Composite(parent, SWT_EMBEDDED | SWT_BORDER);
sessionComposite.setLayout(0,0,64,64);

Frame frame = new Frame(sessionComposite);
frame.setLayout(new BorderLayout());

JPanel panel = new JPanel(new FlowLayout(Flowlayout.LEFT)));
frame.add(panel);


StyledLabel btnClearHistory = new StyledLabel("Clear Session History"); 

// some mouse listeners etc...

panel.add(btnClearHistory);
除了按钮上显示的唯一内容是“Clear Sessiono”之外,其他内容都可以正常工作,其余部分被截断

我尝试在面板、框架和标签上设置
preferredSize
,但没有任何效果。。
任何帮助都将不胜感激。

您的代码根本无法编译。此外,您需要使用
SWT\u AWT.new\u Frame(Composite)
来创建嵌入式框架

以下是一个例子:

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

    Composite sessionComposite = new Composite(shell, SWT.EMBEDDED | SWT.BORDER);

    Frame frame = SWT_AWT.new_Frame(sessionComposite);
    frame.setLayout(new BorderLayout());

    JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    frame.add(panel);

    JButton button = new JButton("Clear Session History"); 
    panel.add(button);

    shell.pack();
    shell.setSize(400,200);
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}
看起来像这样:


可能是因为您明确地将
组合的大小设置为64x64。您应该使用
布局
。请阅读。我已尝试删除它,但仍然不起作用。因此,您现在使用布局?您建议使用哪种布局?在哪个组件上?复合材料、标签、框架或面板?仅此代码中显示的布局。你看,这就是混淆的地方。从未尝试过混合gui框架(这是魔鬼的工作:),但布局的类型取决于gui的外观。在本例中,我将从sessionComposite.setLayout(newfilllayout())
开始。警察会看到发生了什么。为什么要混合使用它们呢?我的代码是编译和执行的,我只是在样式标签中看到整个文本时遇到了问题。文本在“Clear Sessiono”处截断。我无法修改父合成,因此无法更改其布局。@MichealNoel
sessionComposite.setLayout(0,0,64,64)
不编译,
SWT\U EMBEDDED
SWT\U BORDER
未定义,
Flowlayout.LEFT
应为
Flowlayout.LEFT
。。。你试过我的代码吗?我有“SWT_AWT.new_Frame(Composite)”,只是一个输入错误。一切都在整理。我希望我能将我的代码复制/粘贴到此线程中,但我在两台不同的/环境计算机上。您的代码看起来像我的代码。你说的东西都不见了,我在代码里有,只是没有输入,因为我不能复制粘贴好,谢谢。我无法发送屏幕截图,因为环境分离。我无法更改父复合结构的布局,因为它已经过时,并且已填充了其他组件。我所需要的是我的面板拉伸以固定标签。