|
|
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Здраствуйте! Такой вопрос, когда я создаю форму JFrame, я указываю ее расположение с помощью setLocation(), а если мне нужно чтобы появилась форма поцентру экрана, мне нужно самому писать функцию или есть готовая, если нужно самому писать, то как мне получить расрешение экрана?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 13:58 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
размеры экрана: java.awt.Dimension dim = java.awt.Window.getToolkit().getScreenSize(); откуда получаем ширину и высоту: dim.width, dim.height ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 16:57 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
а такой вопрос: скажите если я использую awt, у меня приложение будет работать на всех платформах, а то я где-то читал, что awt в отличии от swing работает не на всех платформах??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 19:50 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Partisan M я попробовал сделать так как вы посоветовали Код: plaintext Код: plaintext Я испотлую Java 2 Platform Standard Edition Development Kit 5.0 и jdk1.5.0_03 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 20:04 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
AWT, как и SWING, входит в стандартный набор классов, поэтому будет работать везде, где можно установить J2SE. Более того, SWING использует для своей работы AWT. Но хотя в приведённом программном примере используются классы AWT, пример предназначен для SWING - просто в SWING-е не стали дублировать некоторые средства AWT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 20:04 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
так а почему же getToolkit() не работает??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 20:44 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Сущность ошибки понятна из её описания. Вы вставили код в неподходящее место - в нём создаётся объект (dim), а вы вставили в статический класс. Это нельзя, да и какой смысл? Вам надо центрировать форму, значит подходящим местом может быть конструктор формы. Вот простейший программный пример (бОльшая часть кода сгенерирована автоматически NetBeans IDE, я только вставил строчки после примечания "центрируем форму на экране): Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 20:47 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
автора вы вставили в статический класс. опечатка, имелся ввиду статический метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2005, 20:49 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
спасибо большое, я кстати и центрирую форму в конструкторе, и когда я написал Код: plaintext 1. 2. PS. можно еще один вопрос в догонку чтобы не открывать новый топик, я с помощью setLocation(x, y), устанавливаю положение на экране, а как считать например ростояние сверху, я пробовал getLocation(Point rv), но как потом работать с этим поинтом я непонял! Можете показать маленький пример. PPS. не пинайте сильно ногами, только начинаю, книги и доки читаю... но все равно хочется быстрее все освоить вот и задаю на форуме много ламерских вопросов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 00:22 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
1)продолжаю отвечать на прежний вопрос 2)отвечаю на новый вопрос 1)Понял, почему у вас сначала не работало - вы вставили код с созданием объекта dim в функцию main (), которая static. Перемещение кода в конструктор решает проблему, но оно возможно только однократно. А что если захочется менять положение формы после её создания? (Пользователь оттащит куда-нибудь - тогда вернуть в центр, или сместить в желаемое место). Тогда конструктор неподходящее место. Убираем код оттуда и добавляем в класс формы CenteredJFrame (имя для примера) метод moveToCenter: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. тут нам пришлось добавить переменную form, чтобы вызвать moveToCenter(),которой не было в оригинальном примере. Это неважно, но чтоб было красивее, можно сделать, чтоб moveToCenter () возвращал ссылку на форму: Код: plaintext 1. 2. 3. 4. 5. 6. теперь можно переписать main () без новой переменной: Код: plaintext 1. 2. 3. 4. 5. 6. 2) я удивлён. Заглядываем в документацию по JDK, ищем описание класса Point, и видим у него свойства x и y с очевидным смыслом. Надо смотреть документацию. Также, подключить её в IDE, чтоб выводились подсказки. Тогда например, если я напишу "Point p;" а потом напишу "p." (с точкой после имени), то IDE выдаст окошко со списком методов и свойств, доступных для "p", т.е. в данном случае cвойств x и y. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 01:44 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Partisan M1)Понял, почему у вас сначала не работало - вы вставили код с созданием объекта dim в функцию main (), которая static. Они же ясно написали, что они вызывали, как вы писали, java.awt.Window.getToolkit().getScreenSize();, в то время как гетТулкит не статик-метод. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. использование invokeLater в данном коде не оправдано вообще никак. это не важно, но чтоб было красивее, можно сделать, чтоб moveToCenter () возвращал ссылку на форму: лучше убрать 256 штук this, дублирующих подразумеваемый префикс. 2) я удивлён. содержимым хелпа? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 12:40 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
to люблю С++ мне кажется, вопрос отвечен, но отвечаю на ваши замечания Они же ясно написали, что они вызывали, как вы писали, java.awt.Window.getToolkit().getScreenSize();, в то время как гетТулкит не статик-метод. Я это и объяснил - очевидно, первоначально вызов getToolkit () был вставлен в main (),который static, потому и не работало. Я посоветовал перенести в конструктор или ввести дополнительный метод для класса формы, программный пример для обоих способов сам проверил. Использование this - мало ли что подразумевается, я для примера написал как понятно. использование invokeLater в данном коде не оправдано вообще никак. А зачем его оправдывать, пусть себе используется. Я его в код не вставлял - он добавлен "мастером проектов" IDE netBeans, которая кстати имеет наилучший визуальный редактор для пользовательского интерфейса (хотя в данном примере обошёлся без него). Это - замечание для того, кто хочет поизучать SWING. 2) я удивлён. содержимым хелпа? :) тем, что человек не посмотрел в документацию по JDK. Если её нету, надо иметь - списать с сайта Sun. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 13:14 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Partisan MЯ это и объяснил - очевидно, первоначально вызов getToolkit () был вставлен в main (),который static, потому и не работало. Уважаемый ВЫ. Куда не вставь вызов java.awt.Window.getToolkit().getScreenSize();, будет исключение на этапе компиляции. Меньше с нетБинсом играйтесь. Использование this - мало ли что подразумевается, я для примера написал как понятно. В интерфейсах вы тоже пишете public abstract у методов и public static final у аттрибутов? Cнимаю шляпу перед вашим мастерством. использование invokeLater в данном коде не оправдано вообще никак. А зачем его оправдывать, пусть себе используется. Точно. Зачем писать Код: plaintext Лучше написать Код: plaintext 1. 2. 3. 4. 5. Я его в код не вставлял - он добавлен "мастером проектов" IDE netBeans, На этот форум код запостил тоже "мастер проектов" ? Ладно один раз написать ерунду гениримую ИДЕ, но дублировать её 5 раз и подписывать, что так удобнее, после чего валить всё на бедный нетБинс... Опять снимаю шляпу. которая кстати имеет наилучший визуальный редактор для пользовательского интерфейса (хотя в данном примере обошёлся без него). Это - замечание для того, кто хочет поизучать SWING. Sure. Пример человека обучившегося при помощи визуального редактора swing'у перед нами. Отличная антиреклама :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 14:41 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Большое всем спасибо за помощь... вопрос закрыт! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 15:22 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
to любящий С++ В вашем послании я вижу грубость, но что касается технический вопросов, то смысла не вижу. А точнее, его и нет. По-существу: Уважаемый ВЫ. Куда не вставь вызов java.awt.Window.getToolkit().getScreenSize();, будет исключение на этапе компиляции. Меньше с нетБинсом играйтесь. Вы очевидно не осведомлены, что neBeans создаёт проектный файл в формате Ant. Который естестевенно может выполняться и без netBeans. Сл., если программа работает, то это не потому, что netBeans как-то тайно подправляет язык Java, а то, что вы написали про "исключение на этапе компиляции" - чушь. Ещё раз, чтоб понятнее: netBeans вызывает Ant. Ant вызывает комилятор. А компилятор компилирует и, в отличие от вас, не находит ошибки (что меня удовлетворяет). В интерфейсах вы тоже пишете public abstract у методов и public static final у аттрибутов? Cнимаю шляпу перед вашим мастерством. вы видите в приведённых программных примерах интерфейсы? Не видите. На фига фантазируете. Насчёт моего мастерства: задали вопросю. Вы не ответили, поэтому пришлось мне ответить, даже если моё мастерство и не совершенно. Ладно один раз написать ерунду гениримую ИДЕ, но дублировать её 5 раз и подписывать, что так удобнее, после чего валить всё на бедный нетБинс... При чём тут вообще netBeans. Не нравится - составляйте программы хоть в Notepad, кому какое дело. Кстати, invokeLater, который почему-то вызвал у вас злобу, netBeans вставил правильно. Хоть в данном примере он не нужен (т.к. пример всего лишь показывает пустую форму), но если создавать более сложное приложение на основе этого каркаса, то понадобится. То есть, я одобряю работу netBeans. Я, кстати, не спрашиваю, для чего, по вашему мнению, служит invokeLater (не заинтересован в дискуссии - у меня есть хорошая книжка, где всё объяснено). Но вы могли бы удалить его вызов в вашей программе, если не нравится. Но приведённый код - это моя программа. Заключение: участвуя в форумах, иногда приходится сталкиваться с подобными субъектами, чего не избежать, а сейчас я прекращаю дискуссию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 15:38 |
|
||
|
Положение формы на экране?
|
|||
|---|---|---|---|
|
#18+
Partisan M В вашем послании я вижу грубость, но что касается технический вопросов, то смысла не вижу. Я уже заметил, что вы смысл с трудом улавливаете :) По-существу: omg!!! Вы очевидно не осведомлены, что neBeans создаёт проектный файл в формате Ant. Который естестевенно может выполняться и без netBeans. Сл., если программа работает, то это не потому, что netBeans как-то тайно подправляет язык Java, а то, что вы написали про "исключение на этапе компиляции" - чушь. Ещё раз, чтоб понятнее: netBeans вызывает Ant. Ant вызывает комилятор. А компилятор компилирует и, в отличие от вас, не находит ошибки (что меня удовлетворяет). Любезный друг. Напишите в каком вам хочется месте строку Код: plaintext 1. Вы получите ошибку компиляции. С этим просто нужно смириться. После этого прочитайте, что вы понаписали про аnt и скажите мне, как это связано со строкой кода, которую мы с вами обсуждаем уже не в одном сообщении. В интерфейсах вы тоже пишете public abstract у методов и public static final у аттрибутов? Cнимаю шляпу перед вашим мастерством. вы видите в приведённых программных примерах интерфейсы? Не видите. На фига фантазируете. Повторюсь. Использование this и public abstract в interfaces - это одна и тоже глупость с одним исключением: this нужно писать, когда поле класса перекрывается именем параметра и нужно получить доступ к этому полю. Насчёт моего мастерства: задали вопросю. Вы не ответили, поэтому пришлось мне ответить, даже если моё мастерство и не совершенно. Да разве я против, что вы ответили? Я просто уточнил потенциальные неточности. Ладно один раз написать ерунду гениримую ИДЕ, но дублировать её 5 раз и подписывать, что так удобнее, после чего валить всё на бедный нетБинс... [quot] При чём тут вообще netBeans. Не нравится - составляйте программы хоть в Notepad, кому какое дело. Нам вас процитировать, где чёрным по белому написано, что invoke это плод кодогенератора netBeans? нетБинс тут именно при этом. Кстати, invokeLater, который почему-то вызвал у вас злобу, netBeans вставил правильно. Хоть в данном примере он не нужен (т.к. пример всего лишь показывает пустую форму), Батенька, если код не нужен, то даже если он "правильный" - то он вставлен он "не правильно". Пример с циклом читали? Согласны, что цикл правильный, но ни кому не нужный? но если создавать более сложное приложение на основе этого каркаса, то понадобится. То есть, я одобряю работу netBeans. Мы видим, вы на нём даже женились бы если можно было :) Я, кстати, не спрашиваю, для чего, по вашему мнению, служит invokeLater Конечно, иначе мне пришлось бы писать: "я удивлён" (с)ПартизанМ. (не заинтересован в дискуссии - у меня есть хорошая книжка, где всё объяснено). Но вы могли бы удалить его вызов в вашей программе, если не нравится. Мы бы его там и не написали :) Но приведённый код - это моя программа. А перед этим говорили, что она не ваша, а сгенерённая нетБинсом, чем и оправдывали этот глупый кусок кода :) Заключение: участвуя в форумах, иногда приходится сталкиваться с подобными субъектами, чего не избежать, а сейчас я прекращаю дискуссию. "Подобными субъектами" - это вами? :) Заключение: не обижайтесь, просто я очень люблю С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2005, 18:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33113855&tid=2152217]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 439ms |

| 0 / 0 |
