Невозможно вставить столбец MS-Excel в текстовый виджет SWT - PullRequest
1 голос
/ 08 декабря 2011

У меня есть текстовый виджет SWT, созданный в стиле SWT.SINGLE например

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

Теперь, когда я пытаюсь скопировать столбец из MS-Excel, только первый выбранный столбец вставляется в виджет Текст, а не весь столбец.
Я понимаю, что когда я создаю Text виджет с SWT.MULTI, я могу вставить весь столбец Excel в виджет, но он не будет в одной строке.

Ранее я использовал Swings JTextField, и в этом случае всякий раз, когда я использовал для вставки столбца MS-Excel (используя CTRL-V), весь столбец Excel вставлялся как строка в JTextField.
Я ищу такую ​​же функцию для текстового виджета SWT.

1 Ответ

2 голосов
/ 16 декабря 2011

Проблема с символом новой строки, который 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...