13.03.2014 / 17:00 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Здравствуйте, ребята.Пользуюсь awt , swing. У меня вопрос, как создать 2 потока (это я сделал), но чтобы метод paint из каждого потока рисовал в одном окне (я делал window.add(obj1); window.add(obj2))? но работал метод paint от 2-ого потока, а мне нужно чтобы оба paint'ы активизировались и рисовали в одном окне!!!Вот код: Открыть спойлер Закрыть спойлер package a;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class c1 extends JPanel implements Runnable {
protected void paintComponent(Graphics g) {
Color MyColor=new Color(100,141,56);// Создать цвет
g.setColor(MyColor);// Использовать цвет
g.fillRect(25, 25, 100,100);
repaint();
}
public void run() //Этот метод будет выполняться в побочном потоке
{
System.out.println("Привет из побочного потока!");
}
}
public class AAA {
public static class c2 extends JPanel {
protected void paintComponent(Graphics g) {
Color MyColor=new Color(66,77,15);// Создать цвет
g.setColor(MyColor);// Использовать цвет
g.fillRect(0, 0, 120,120);
repaint();
//myapplet.getAudioClip(MyPlayerClass.class.getResource("путь и имя ресурса для проигрывания").play();
}
}
//static c1 obj;
public static void main(String[] a) {
c1 obj1= new c1();
c2 obj2 = new c2();
JFrame window = new JFrame();
window.setSize(840, 560);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.add(obj2);
//window.add(obj);
window.setVisible(true);
Thread t = new Thread(obj1); //Создание потока "myThready"
t.start();
}
}
Изменено UserSuperPupsik (13.03 / 17:00) (всего 1 раз) |
13.03.2014 / 20:51 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| UserSuperPupsik, Нельзя добавить два JPanel так, чтобы они занимали всё окно и рисовались оба (хотя через JLayer можно). Но вот добавить панели так, чтобы каждый занимал половину окна - без проблем можно.
__________________
let live |
13.03.2014 / 20:57 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Не не, суть проблемы такова, можно ли создать 2 метода paint(), чтобы каждый был отдельным потоком и рисовал в одном и том же окне? Если да, то как?
Изменено UserSuperPupsik (13.03 / 20:57) (всего 1 раз) |
13.03.2014 / 21:01 | |
vl@volk Пользователь Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| Передать им один и тотже Graphics
__________________
знает толк |
13.03.2014 / 21:03 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| UserSuperPupsik, нет, рисование происходит в UI-потоке. Хотя можно исхитриться и рисовать в картинку, но всё равно, сама картинка на панели будет рисоваться в главном потоке.
__________________
let live |
13.03.2014 / 21:09 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Моя цель довольно проста нарисовать квадрат1, который движется в окне в потоке 1. нарисовать квадрат2, который движется в этом же окне в потоке 2, При этом в одном окне я вижу 2 квадрата одновременно!!! |
13.03.2014 / 21:14 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| UserSuperPupsik, И что тебе мешает создать ОДИН JPanel, ОДИН метод paintComponent, ДВА потока, ДВА поля с координатами прямоугольника и в ДВУХ потоках их менять.
__________________
let live |
13.03.2014 / 21:20 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Т.е. координаты будут передаваться в paint из ДВУХ потоков. А как же это будет выглядеть на языке java? Изменено UserSuperPupsik (13.03 / 21:21) (всего 1 раз) |
13.03.2014 / 21:23 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Спасибо!!!Кажется понял!!!Попробую отпишусь!!! Изменено UserSuperPupsik (13.03 / 21:24) (всего 1 раз) |
14.03.2014 / 18:02 | |
Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| При работе с RMS можно записать массив байтов в запись с следующим индексом и считать массив байтов из записи с любым индексом. Как можно записать массив байтов в запись с любым индексом?
__________________
Homo homini penis est. |