powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / SWT: построчное добавление строки во фрейм.
11 сообщений из 11, страница 1 из 1
SWT: построчное добавление строки во фрейм.
    #38222606
Фотография 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.
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
SWT: построчное добавление строки во фрейм.
    #38222779
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну т.е. мне надо вызывать метод printMessage () из любого другого класса чтобы вывести (приаппендить) сообщение во фрейм. Доброй ночи и добра вам.
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38222947
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12,

Я не силён в SWT и не уверен на счёт правильности моего ответа, но на первый взгляд - ваш метод printMessage() каждый раз заново пересоздаёт List и заполняет его одной строкой, попробуйте разнести это, т.е. создание List вынесите в метод создания Frame, а в printMessage() оставьте только list.add(message).
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38222982
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SWT: построчное добавление строки во фрейм.
    #38223009
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перешла к использованию класса 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
SWT: построчное добавление строки во фрейм.
    #38223131
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12, пришлось вернуться к swing. =(
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38223133
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12May12, пришлось вернуться к swing. =(
А чего вы скачете туда-сюда?
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38223137
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }


Что вы этим кодом хотите добиться?
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38223141
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SWT: построчное добавление строки во фрейм.
    #38223508
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD, спасибо. кажется, это многопоточность....
а я смогу вызывать метод "printMessage" из разных классов, грубо говоря можно ли засунуть метод "printMessage" в метод одного класса, а потом в метод другого класса?
...
Рейтинг: 0 / 0
SWT: построчное добавление строки во фрейм.
    #38223679
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12, да, используя ключевое слово static. Извините, что у вас на глазах изучаю.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SWT: построчное добавление строки во фрейм.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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