2011-12-08 6 views
1

SWT.SINGLEのスタイル で作成されたSWT Textウィジェットがあります。今SWTのテキストウィジェットにMS-Excelの列を貼り付けることができません

Text myTextControl = new Text(shell, SWT.SINGLE); 

、私は最初にその選択した列のMS-Excelから列をコピーしようと、列全体をテキストウィジェットに貼り付けるとないます。
SWT.MULTITextウィジェットを作成すると、エクセルカラム全体をウィジェットに貼り付けることができますが、1行にはなりません。

以前、私はスイングJTextFieldを使用していたと私は(CTRL-Vを使用して)MS-Excelの列を貼り付けるために使用されるときはいつでも、その場合には全体エクセル列がJTextFieldの行として貼り付けます。
SWT Textウィジェットで同じ種類の機能を探しています。

答えて

2

問題は、Excelが選択した列の各セルの後に挿入する改行文字です。 Text.SINGLE次に、貼り付けられたテキストの行の終わりを認識してトリムします。

このコードは、pasteイベントを取得し、選択された1

import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.RowLayout; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Event; 
import org.eclipse.swt.widgets.Listener; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.swt.widgets.Text; 

public class PasteModify { 

    private final String lineReplaceString = ", "; 

    public static void main(String[] args) { 
     Display display = new Display(); 
     Shell shell = new Shell(display); 
     shell.setLayout(new RowLayout(SWT.VERTICAL)); 

     Text tfPaste = new Text(shell, SWT.BORDER); 
     tfPaste.setText("paste excel column here"); 
     tfPaste.addListener(SWT.Verify, new Listener() { 

      @Override 
      public void handleEvent(Event event) { 
       event.text = event.text.replace("\n", PasteModify.this.lineReplaceString); 
      } 
     }); 
     shell.setBounds(50, 50, 300, 200); 
     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 
} 
のために、すべての改行文字を置き換えます
関連する問題