2014-04-29 131 views
0

所有,在此先感謝所有幫助。StyledLabel上的文本被截斷

我正在混合一些SWT和擺動。下面是代碼:

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); 

一切運作良好,除了顯示按鈕上的唯一的事情就是「清除Sessio」其餘部分已截斷。

我已經嘗試在面板,框架和標籤上設置preferredSize,但沒有任何工作.. 任何幫助,將不勝感激。

+0

可能是因爲你明確地設置'Composite'的大小到64x64。你應該使用'Layout'來代替。請閱讀[this](http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html)。 – Baz

+0

我試過刪除它,但它仍然不起作用。 –

+0

所以你現在使用佈局? – Baz

回答

1

您的代碼根本無法編譯。另外,您需要使用SWT_AWT.new_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(); 
} 

是這樣的:

enter image description here

+0

我的代碼編譯並執行我只是在查看StyledLabel中的整個文本時遇到問題。文本在「Clear Sessio」處截斷我無法修改我的父級組合,所以我無法更改其佈局。 –

+0

@MichealNoel'sessionComposite.setLayout(0,0,64,64);'不編譯,'SWT_EMBEDDED'和'SWT_BORDER'沒有定義,'Flowlayout.LEFT'應該是'FlowLayout.LEFT' ...你試過我的代碼嗎? – Baz

+0

我確實有「SWT_AWT.new_Frame(Composite)」,只是一個錯字。一切都編譯完成。我希望我可以複製/粘貼我的代碼到這個線程,但我在兩個單獨的環境機器上。 –