LINUX.ORG.RU

[java][swing]написано однажды работает везде, но не так

 ,


0

2

Помогаю другу с дипломом, пишу на яве, gui на swing. Сегодня протестировал программу на винде. И получил совершенно не тот результат который хотел. Скрин, в е17 и кде окошки отображаются нормально, а вот в седьмой винде криво. Под хп пока не тестил. Что вообще можно с этим сделать, понятно что можно устанавливать размер окон с запасом, но в программе уже достаточно много разных диалогов и каждый из них редактировать а потом тестировать на двух-трех ос - долго. И почему вообще так происходит? Я думал что свинг хоть и выглядит специфически(по моему отвратительно), но он и предназначен что бы гарантировано одинаково отрисовываться на любой ОС.


Ответ на: комментарий от dave

Ну конкретно в этом случае применяется, BorderLayout.
В середину вставлен JList, сверху и снизу JPanel с GridBagLayout.
Вроде все правильно.

n4ela
() автор топика
Ответ на: комментарий от n4ela

А, нет, поменял на стандратную тему, кнопки стали заезжать, буду копать layout.

n4ela
() автор топика

У вас ещё не проблемы :) Вот когда народу приходится «кроссплатформенный» ibank на java из-под вайна запускать - вот это трудности!

adepto
()

Неправильные леайуты. А относительно внешнего вида, то прогугли как включить Nimbus. Ты удивишься

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

>А относительно внешнего вида, то прогугли как включить Nimbus. Ты удивишься

Nimbus приколен, но все таки внешний вид его своеобразен. Особенно забавляет, когда его насильно врубают в некоторых плагинах опенофиса)

annulen ★★★★★
()
Ответ на: комментарий от n4ela

Ну конкретно в этом случае применяется, BorderLayout.

На чём, на главной форме? frame.getContentPane().setLayout(new BorderLayout())?

В середину вставлен JList, сверху и снизу JPanel с GridBagLayout.

setLayout(new BorderLayout());
add(new JPanel(), BorderLayout.NORTH);
add(new JList(), BorderLayout.CENTER);
add(new JPanel(new GridBagLayout()), BorderLayout.SOUTH);

Так?

Вроде все правильно.

Нифига. JList должен помещаться внутри JScrollPane, чтобы не вылезать и не рушить идиллию:

setLayout(new BorderLayout());
JPanel panel1 = new JPanel(...);
add(panel1, BorderLayout.NORTH);
JList list = new JList(...);
JScrollPane scrollPane = new JScrollPane(list);
add(scrollPane, BorderLayout.CENTER);
JPanel panel2 = new JPanel(new GridBagLayout());
add(panel2, BorderLayout.SOUTH);

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Спасибо, убил целый день, но вроде поправил все формы.
Все формы съезжали в винде из-за не проставленных отступов от краев
Конкретно в этой форме была такая строчка scrollPane.setColumnHeaderView(panelNorth);
А вот почему в линуксовских WM все смотрелось сносно, не понятно.

n4ela
() автор топика
Ответ на: комментарий от vertexua

По скринам nimbus прикольно выглядит, надо попробовать заюзать.

n4ela
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.