2015-01-03 2 views
0

Я пытаюсь напечатать имена файлов в каталоге, но только один из них отображается. Итак, как отобразить содержимое полного массива в стиле SWT? и, кроме того, кто-нибудь скажет мне какой-нибудь онлайн-учебник для SWT?Как отобразить содержимое полного массива в SWT-стиле?

package gui; 
import java.io.*; 

import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.SelectionAdapter; 
import org.eclipse.swt.events.SelectionEvent; 
import org.eclipse.swt.events.ControlAdapter; 
import org.eclipse.swt.events.ControlEvent; 
import org.eclipse.swt.custom.StyledText; 

public class FileEditor { 

    /** 
    * Launch the application. 
    * @param args 
    */ 
    public static void main(String[] args) { 
     Display display = Display.getDefault(); 
     Shell shell = new Shell(); 
     shell.setSize(450, 300); 
     shell.setText("SWT Application"); 

     Button btnShow = new Button(shell, SWT.NONE); 
     btnShow.addControlListener(new ControlAdapter() { 
      @Override 
      public void controlMoved(ControlEvent e) { 

      } 
     }); 

     StyledText styledText = new StyledText(shell, SWT.BORDER | SWT.FULL_SELECTION); 
     styledText.setBounds(154, 36, 256, 191); 

     btnShow.addSelectionListener(new SelectionAdapter() { 
      @Override 
      public void widgetSelected(SelectionEvent e) { 
       File newdir = new File("d:\\Softwares"); 
       String[] list= newdir.list(); 

        if(newdir.isDirectory()) 
       { 
        for(int i=1;i<list.length;i++) 
        { 
         styledText.setText(list[i]); 

        } 
       } 

      } 
     }); 

     btnShow.setBounds(23, 146, 75, 25); 
     btnShow.setText("Show");  

     shell.open(); 
     shell.layout(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) { 
       display.sleep(); 
      } 
     } 
    } 
} 

ответ

0

StyledTextsetText метод заменяет все существующий текст с новым текстом, так что вы только получаете последний пункт.

Вместо этого вы можете использовать метод append, чтобы добавить в конце контроля, так что-то вроде:

for (String item : list) 
{ 
    styledText.append(item + '\n'); // Add item with new line between entries 
} 
+0

спасибо, я думал то же самое, но не знал метод. –

Смежные вопросы