Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Как на Java сделать окна как у windows???


Автор: artem_from_minsk 22.12.2007, 02:33
Люди, кто может подсказать, как сделать в java окна как у windows. Как прописат? smile user posted image

Автор: hamsterKSU 22.12.2007, 03:12
вроде должно помочь, но они вроде по умолчанию как у винды
Код

JFrame.setDefaultLookAndFeelDecorated(false)

Автор: nornad 22.12.2007, 03:35
Цитата(hamsterKSU @  22.12.2007,  06:12 Найти цитируемый пост)
они вроде по умолчанию как у винды

Нет, по умолчанию окна джавы в её стиле оформлены (MetalLookAndFeel, вроде).
Чтобы окна были как в винде, надо юзать WindowsLookAndFeel (или как он там по-научному). Но я не рекомендую его - слишком уж глючный. smile

Автор: powerOn 22.12.2007, 12:52
Цитата(nornad @  22.12.2007,  03:35 Найти цитируемый пост)
Но я не рекомендую его - слишком уж глючный.

Примеры глюков?

Следует помнить, что WindowsLookAndFeel будет работать только под Windows, поскольку требует системных библиотек для отрисовки. Кроме того лучше использовать не WindowsLookAndFeel, а тот LAF что вернет UIManager.getSystemLookAndFeelClassName(); ибо под Windows может быть стиль как XP, так и Classic. И потом, при выполнении на других ОС, программа будут выглядеть соответственно их стилю оформления GUI.

Автор: dorogoyIV 22.12.2007, 14:02
если я не ошибаюсь, LaF надо вешать на каждый компонент на фрейме?
вот заморочка блин  smile   smile 

____________

хе...  smile , ошибался  smile 
если фрейм вызывать прямо в блоке try{} catch
Код

import java.awt.*;
import javax.swing.*;

class LaF extends JFrame
{
 LaF()
 {
  setLayout(new FlowLayout());
  JButton jb1=new JButton("button 1");
  add(jb1);

  JButton jb2=new JButton("button 2");
  add(jb2);

  add(new JLabel("label"));
  add(new JCheckBox("checkbox"));
  add(new JTable(4,5));
  add(new MyPanel());
 }

 public static void main(String [] args)
 {
  try
  {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
   JFrame f=new LaF();
   f.setBounds(100,100,400,300);
   f.setVisible(true);
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  catch(Exception ex){}
 }
}

class MyPanel extends JPanel
{
 MyPanel()
 {
  setPreferredSize(new Dimension(100,100));
  setBackground(Color.yellow);
  add(new JButton("button 1"));
  add(new JButton("button 2"));
  add(new JComboBox());
 }
}


Автор: nornad 22.12.2007, 18:50
Цитата(powerOn @  22.12.2007,  15:52 Найти цитируемый пост)
Примеры глюков?

Эх, давно это было, но постараюсь вспомнить. smile
В общем, основной проблемой было то, что при использовании WindowsLookAndFeel интерфейс у нас разъезжался. То одно поле куда-то сползёт, то другое. То что-то вообще не отобразится (это бывало куда реже). В стандартных L&F интерфейс проблем не имел. Выглядел, конечно, не так мило и привычно, зато работал нормально и без глюков.
А использовали именно только на винде - как правильно замечено, этот лукэнфил на других ОСях не идёт. Шаманить не пробовали - заказчик использовал только винду.
Цитата(dorogoyIV @  22.12.2007,  17:02 Найти цитируемый пост)
если я не ошибаюсь, LaF надо вешать на каждый компонент на фрейме?

Нет. Лукэнфил можно указать как используемый программой по умолчанию для всего гуя. Вот только строчку кода не спрашивай - не использовал уже лет двести. Или триста. В общем, со времён французской революции. smile

Автор: w1nd 22.12.2007, 18:58
Цитата(nornad @  22.12.2007,  18:50 Найти цитируемый пост)
В общем, основной проблемой было то, что при использовании WindowsLookAndFeel интерфейс у нас разъезжался. То одно поле куда-то сползёт, то другое. То что-то вообще не отобразится (это бывало куда реже). В стандартных L&F интерфейс проблем не имел. Выглядел, конечно, не так мило и привычно, зато работал нормально и без глюков.

Всё же было бы интересно узнать о конкретных примерах. Потому как никогда не наблюдал подобного. Кроме того, я не могу придумать условий, при которых "интерфейс может разъезжаться" из-за LnF, окромя тех случаев, когда программисты сознательно лезут в область ответственности именно LnF.

Автор: nornad 22.12.2007, 20:04
Цитата(w1nd @  22.12.2007,  21:58 Найти цитируемый пост)
Всё же было бы интересно узнать о конкретных примерах.

Я бы и рад предоставить конкретные примеры, да не могу - проект мало того, что обширный, так я ещё и давно уже на нём не работаю. Естественно, код проекта мне никто не даст. smile Но факт остаётся фактом - меняешь лукэнфил на виндовый - поля на диалоге сползают (не везде и не постоянно, но с завидной регулярностью).
Программисты к лукэнфилу внаглую не лезли. Ну, если, конечно, не считать смены лукэнфила на лету. smile

Автор: w1nd 22.12.2007, 21:09
Цитата(nornad @  22.12.2007,  20:04 Найти цитируемый пост)
Но факт остаётся фактом - меняешь лукэнфил на виндовый - поля на диалоге сползают (не везде и не постоянно, но с завидной регулярностью).Программисты к лукэнфилу внаглую не лезли. Ну, если, конечно, не считать смены лукэнфила на лету.

Понятно. Делаю вывод - всё же никаких функциональных проблем у WLAF нет. А вот смена LAF на лету - это слабое место практически всех имеющихся реализаций.

Автор: artem_from_minsk 23.12.2007, 02:03
 smile  smile  smile  smile  smile 
БОльшое ВсеМ Спасибо!!!Помогло. 

Автор: Metal_Heart 29.12.2007, 12:50
w1nd, у меня была мелкая неприятность с виндовым ЛАФ-ом, шрифт в JTextArea отображался очень маленького размера, правда было это 2 года назад

Автор: artem_from_minsk 26.5.2008, 20:21
Ок. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)