2011-12-08 4 views
1

SWT.SINGLE 스타일 으로 만든 SWT Text 위젯이 있습니다. 이제SWT의 텍스트 위젯에 MS-Excel 열을 붙여 넣을 수 없습니다.

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

, 난 단지 먼저 선택한 열의 MS 엑셀에서 열을 복사하려고 전체 열을 텍스트 위젯에 붙여 넣을하지됩니다.
SWT.MULTI으로 Text 위젯을 만들 때 전체 Excel 열을 위젯에 붙여 넣을 수는 있지만 하나의 행에는 포함되지 않습니다.

이전에는 Swings JTextField을 사용하고 있었고이 경우 Ctrl-V를 사용하여 MS-Excel 열을 붙여 넣을 때마다 전체 Excel 열이 JTextField의 행으로 붙여 넣기됩니다.
SWT Text 위젯과 동일한 종류의 기능을 찾고 있습니다.

답변

2

문제는 Excel이 선택한 열의 각 셀 다음에 오는 줄 바꿈 문자 때문입니다. Text.SINGLE 그런 다음 붙여 넣은 텍스트의 줄 끝을 인식하고 잘라냅니다.

이 코드를 붙여 넣기 이벤트를 얻을 선택된 하나

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(); 
    } 
} 
에 대한 모든 새로운 라인 문자를 대체
관련 문제