Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / SWT: построчное добавление строки во фрейм. / 11 сообщений из 11, страница 1 из 1
11.04.2013, 19:08:54
    #38222606
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
Ребят, помогите с методом, который добавляет новую строку во фрейм (не удаляя ранее добавленные), а то уже смеркается.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class MainFrame {

     Display display = new Display();
     Shell shell = new Shell(display);
   
  public void showMainFrame() {
    
    shell.setText("My1stFrame");
    Image iconToLeftUpperCon = new Image(display, "icon.jpg" );
    shell.setImage(iconToLeftUpperCon);
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }



   public void  printMessage (String message) {

    
    FillLayout fLayout = new FillLayout();
    shell.setLayout(fLayout);

    List list = new List(shell, SWT.V_SCROLL|SWT.H_SCROLL);
    list.add(message);
}

}


Заранее спасибо.
...
Рейтинг: 0 / 0
11.04.2013, 23:30:39
    #38222779
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
ну т.е. мне надо вызывать метод printMessage () из любого другого класса чтобы вывести (приаппендить) сообщение во фрейм. Доброй ночи и добра вам.
...
Рейтинг: 0 / 0
12.04.2013, 09:26:49
    #38222947
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
May12,

Я не силён в SWT и не уверен на счёт правильности моего ответа, но на первый взгляд - ваш метод printMessage() каждый раз заново пересоздаёт List и заполняет его одной строкой, попробуйте разнести это, т.е. создание List вынесите в метод создания Frame, а в printMessage() оставьте только list.add(message).
...
Рейтинг: 0 / 0
12.04.2013, 09:59:10
    #38222982
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
Garrick, спасибо, что откликнулись. Но пока не работает:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public class MainFrame {

     Display display = new Display();
     Shell shell = new Shell(display);
     FillLayout fLayout = new FillLayout();
     List list = new List(shell, SWT.V_SCROLL|SWT.H_SCROLL);
       
    public void showMainFrame() {
    
    shell.setText("My1stFrame");
    Image iconToLeftUpperCon = new Image(display, "icon.jpg" );
    shell.setImage(iconToLeftUpperCon);
    
    shell.setLayout(fLayout);
        
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
    
   public void  printMessage (String message) {
   list.add(message);
}
}



Тут надо сначала создать фрейм, а потом накидывать туда методом printmessage сообщения (а может еще и добавлять в какуюто очередь).
...
Рейтинг: 0 / 0
12.04.2013, 10:20:20
    #38223009
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
Перешла к использованию класса TextLayout:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public class MainFrame {

     Display display = new Display();
     Shell shell = new Shell(display);
     TextLayout tLayout = new TextLayout(display);
   
    public void showMainFrame() {
    
    shell.setText("My1stFrame");
    Image iconToLeftUpperCon = new Image(display, "icon.jpg" );
    shell.setImage(iconToLeftUpperCon);
    
     tLayout.setText("Test Text"); 
     //shell.setLayout(fLayout);
    
      shell.addListener(SWT.Paint, new Listener() {
      public void handleEvent(Event event) {
          tLayout.draw(event.gc, 10, 10);
      }
    });
    
     
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
    
   public void  printMessage (String message) {
     
}

}



Но нужный результат пока не достигнут.
...
Рейтинг: 0 / 0
12.04.2013, 11:18:22
    #38223131
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
May12, пришлось вернуться к swing. =(
...
Рейтинг: 0 / 0
12.04.2013, 11:19:30
    #38223133
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
May12May12, пришлось вернуться к swing. =(
А чего вы скачете туда-сюда?
...
Рейтинг: 0 / 0
12.04.2013, 11:20:10
    #38223137
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
Код: java
1.
2.
3.
4.
5.
while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }


Что вы этим кодом хотите добиться?
...
Рейтинг: 0 / 0
12.04.2013, 11:22:03
    #38223141
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
May12,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
public class MainFrame {
         public static void main(String[] args) {
		final Main m = new Main();
		Thread t = new Thread(new Runnable() {

			public void run() {
				for (int i = 0; i < 50; i++) {
					m.printMessage("i:" + i);
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {

					}
				}

			}
		});
		t.start();
		m.showMainFrame();

	}

	Display display = new Display();
	Shell shell = new Shell(display);
	Composite c = null;
	FillLayout fLayout1;

	public void showMainFrame() {

		shell.setText("My1stFrame");
		FillLayout fLayout = new FillLayout(SWT.VERTICAL);
		shell.setLayout(fLayout);

		c = new Composite(shell, SWT.V_SCROLL);
		fLayout1 = new FillLayout(SWT.VERTICAL);
		c.setLayout(fLayout1);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		display.dispose();
	}

	public void printMessage(final String message) {
		if (c != null) {
			Display.getDefault().asyncExec(new Runnable() {
				public void run() {
					Label l=new Label(c, SWT.BORDER);
					l.setText(message);
					l.getParent().layout();
				}
			});
		}
	}
}
...
Рейтинг: 0 / 0
12.04.2013, 14:33:35
    #38223508
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
0FD, спасибо. кажется, это многопоточность....
а я смогу вызывать метод "printMessage" из разных классов, грубо говоря можно ли засунуть метод "printMessage" в метод одного класса, а потом в метод другого класса?
...
Рейтинг: 0 / 0
12.04.2013, 15:45:57
    #38223679
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SWT: построчное добавление строки во фрейм.
May12, да, используя ключевое слово static. Извините, что у вас на глазах изучаю.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / SWT: построчное добавление строки во фрейм. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]