Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по прорисовке swing компонент. / 13 сообщений из 13, страница 1 из 1
15.04.2013, 21:54:02
    #38226693
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
Здравствуйте, не совсем понимаю в какую сторону искать решение проблемы, как понимаю не нашёл схожего вопроса.

Проблема заключается в прорисовке компонент GUI. Работаю с помощью Grid, поэтому опубликование кода скорее всего не сильно поможет. Идея заключается в создании Frame расположении на нём MenuBar, который содержит MenuBarItem элементы. Так же на Frame располагается ScrollPane в который вывожу изображение. Меню работает, изображение есть, но после отрисовки изображения, невозможно нажать на элементы MenuBar т.к. они разворачиваются под изображением и на них невозможно использовать. Не совсем понимаю в чём проблема, менял контейнер ScrollPane на JPanel и JLabel, но проблема такая же. Возможно кто-то сталкивался или может хотя бы дать направление, в котором нужно искать?
...
Рейтинг: 0 / 0
15.04.2013, 22:02:46
    #38226699
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
Кто такой Grid? Контролы java.awt.* и Swing не стоит миксовать. Что за ScrollPane и MenuBar? Почему не JScrollPane?
...
Рейтинг: 0 / 0
15.04.2013, 22:16:10
    #38226705
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
BlazkowiczКто такой Grid? Контролы java.awt.* и Swing не стоит миксовать. Что за ScrollPane и MenuBar? Почему не JScrollPane?

GridBag это графический редактор Netbeans. На самом деле опечатался использую JScrollPane и JMenuBar оба компонента Swing.
...
Рейтинг: 0 / 0
15.04.2013, 22:18:13
    #38226707
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
JScrollPane - панель с полосами прокрутки.
JMenuBar - это верхнее меню окна. (Файл, Вид, Помощь и т.д.)
...
Рейтинг: 0 / 0
15.04.2013, 22:19:57
    #38226709
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
RubakiGridBag это графический редактор Netbeans.

GridBagLayout это LayoutManager. Это не "редактор".
...
Рейтинг: 0 / 0
15.04.2013, 22:27:06
    #38226715
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
http://docs.oracle.com/javase/6/docs/api/javax/swing/JPopupMenu.html#setDefaultLightWeightPopupEnabled(boolean)
Где-то вы таки AWT-шные контролы напхали. На чистом Swing этого не происходит.
Покажите скриншот.
...
Рейтинг: 0 / 0
15.04.2013, 22:29:35
    #38226718
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
...
Рейтинг: 0 / 0
15.04.2013, 22:30:45
    #38226720
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
BlazkowiczRubakiGridBag это графический редактор Netbeans.

GridBagLayout это LayoutManager. Это не "редактор".

Не совсем долго работаю, поэтому путаюсь в терминологии.

Вот можно увидеть пример компонентов и прорисовку элементов. При открытии меню Фильтров.

http://i47.fastpic.ru/big/2013/0415/ff/dc603fff0303c8e009201dbb089caeff.jpg
...
Рейтинг: 0 / 0
15.04.2013, 22:31:37
    #38226722
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
...
Рейтинг: 0 / 0
15.04.2013, 22:41:43
    #38226727
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
Странно, конечно. Вроде в дереве все контролы свинговые. А как вы картинку рисовали?
...
Рейтинг: 0 / 0
15.04.2013, 22:55:50
    #38226740
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
BlazkowiczСтранно, конечно. Вроде в дереве все контролы свинговые. А как вы картинку рисовали?

Есть Frame с JPanel JPanelImageArea;

Определяю изображение originalImage по нажатию кнопки openImageButtonActionPerformed через FileChooser после вызываю imgViewer и в нём происходит прорисовка.

Код: java
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.
 private void openImageButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        try {
            fileOpen();
        } catch (IOException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (JPanelImageArea != null) {
            this.remove(JPanelImageArea);
        }

        JPanelImageArea = new JPanel();
        JPanelImageArea.setBounds(10, 6, 701, 300);
        add(JPanelImageArea);

        if (originalImage.getWidth(null) < 700 || originalImage.getHeight(null) < 300) {
            imgViewer = new ImgViewer(originalImage, new Dimension(originalImage.getWidth(this), originalImage.getHeight(this)));
            JPanelImageArea.add(imgViewer);
            imgViewer.repaint();
        } else {
            imgScaleViewer = new ImgScaleViewer(originalImage, new Dimension(originalImage.getWidth(this), originalImage.getHeight(this)));
            JPanelImageArea.add(imgScaleViewer);
            imgViewer.repaint();
        }

        JPanelImageArea.repaint();
        JPanelImageArea.doLayout();
        JPanelTextArea.repaint();
        JPanelTextArea.doLayout();

    }                                               




Код ImgViewer
Код: java
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.
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class ImgViewer extends JPanel
{

    public ImgViewer(Image img, Dimension dim)
    {
    image = img;
    dimMinSize = dim;
    }    
    
    @Override
    public void paint(Graphics g) { 
        super.paintChildren(g);
        super.paintBorder(g);
        super.paintComponents(g);
        int x = (this.getWidth() - image.getWidth(null)) / 2;
        int y = (this.getHeight() - image.getHeight(null)) / 2;
        g.drawImage(image, x, y, this);
    }
           
    @Override
        public Dimension getPreferredSize()
    {
        return dimMinSize;
    }
    
    @Override
        public Dimension getMinimumSize()
    {
        return dimMinSize;
    }
    
    @Override
        public Dimension preferredSize()
    {
        return dimMinSize;
    }
    
    @Override
        public Dimension minimumSize()
    {
        return dimMinSize;
    }
    
    Image image;
    Dimension dimMinSize;
}
...
Рейтинг: 0 / 0
16.04.2013, 10:03:33
    #38227038
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
А для чего нужен ImgViewer, если JLabel нормально отображает картинки?
Возможно проблема именно в том что переопределен метод paint().
...
Рейтинг: 0 / 0
17.04.2013, 16:23:09
    #38229525
Rubaki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по прорисовке swing компонент.
BlazkowiczА для чего нужен ImgViewer, если JLabel нормально отображает картинки?
Возможно проблема именно в том что переопределен метод paint().

Перерисовка нужна, т.к. масштабирование происходит. В добился нужного результата, написав код с 0, особо так не разобрался почему не работало, но уже всё исправлено. Спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по прорисовке swing компонент. / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]