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


Автор: diablero 13.6.2008, 17:33
Суть в чем, елси у JMenuItem не у всех есть иконки, то меню отрисовывается криво.  
Мне нужно изменить отрисовку JMenu, чтобы выровнять текст у всех JMenuItem.
Как это сдлеать? Есть пример у кого?

Автор: niasilil 13.6.2008, 19:37
странно, у меня все ровно отрисовывает
Код

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Test {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("Test");

        frame.setJMenuBar(bar);
        bar.add(menu);

        JMenuItem item= new JMenuItem("test1", createMenuWindowIcon("test.png"));
        menu.add(item);

        JMenuItem item2= new JMenuItem("test2");
        menu.add(item2);

        frame.pack();
        frame.setVisible(true);
    }

    public static ImageIcon createMenuWindowIcon(String path) {
        java.net.URL imageURL = Test.class
                .getResource(path);

        if (imageURL == null) {
            // it is not an error, null means "no icon"
             System.err.println("Resource not found: " + path);
            return null;
        } else {
            return new ImageIcon(imageURL);
        }
    }
}

какая версия jvm?

Автор: diablero 13.6.2008, 19:43
Цитата(niasilil @  13.6.2008,  19:37 Найти цитируемый пост)
странно, у меня все ровно отрисовывает

Ну где же ровно. Стандартно все ровняется по левому краю. И если нет иконки то:
------------------
 smile открыть
------------------
закрыть
------------------

А мне нужно чтобы текст ровнялся одинаково, независемо есть иконка или нет.
Как меню в idea, ворде.

Автор: niasilil 13.6.2008, 19:46
так у меня ровняется, вот я и удивился. 
------------------
smile открыть
------------------
      закрыть
------------------

какая jvm?
какая look and feel?

Добавлено через 8 минут и 31 секунду
и здесь тоже все нормально выглядит. 
http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

удивительное дело. 

Автор: diablero 13.6.2008, 19:57
Цитата(niasilil @  13.6.2008,  19:46 Найти цитируемый пост)
какая jvm?

1.5
Цитата(niasilil @  13.6.2008,  19:46 Найти цитируемый пост)
какая look and feel? 

по умолчанию.

Автор: niasilil 13.6.2008, 20:03
теперь вижу, у меня тоже так. 

фиг знает, ну вставляй пустую картинку когда null в createMenuWindowIcon
другого способа не знаю, извини

Добавлено через 1 минуту и 52 секунды
кстати, еще заметил. 
если компилировать под 5й версией, но с использованием библиотек 6й то тоже все выглядит выровненным. 
можно покопать исходники, но мне лень

Автор: diablero 13.6.2008, 22:14
niasilil спасибо тебе. За подсказку.
Код

final public class EmptyIcon implements Icon {
  public static final EmptyIcon SIZE_16 = new EmptyIcon(16);
  public static final EmptyIcon SIZE_24 = new EmptyIcon(24);
  private int size;

  public EmptyIcon(int size) {
    this.size = size;
  }
  public int getIconWidth() {
    return size;
  }
  public int getIconHeight() {
    return size;
  }
  public void paintIcon(Component c, Graphics g, int x, int y) {
  }
}

Если нет иконки и фсе!

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