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

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

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

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

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

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

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

http://i47.fastpic.ru/big/2013/0415/ff/dc603fff0303c8e009201dbb089caeff.jpg
...
Рейтинг: 0 / 0
Вопрос по прорисовке swing компонент.
    #38226722
Rubaki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Вопрос по прорисовке swing компонент.
    #38226727
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, конечно. Вроде в дереве все контролы свинговые. А как вы картинку рисовали?
...
Рейтинг: 0 / 0
Вопрос по прорисовке swing компонент.
    #38226740
Rubaki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Вопрос по прорисовке swing компонент.
    #38227038
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для чего нужен ImgViewer, если JLabel нормально отображает картинки?
Возможно проблема именно в том что переопределен метод paint().
...
Рейтинг: 0 / 0
Вопрос по прорисовке swing компонент.
    #38229525
Rubaki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczА для чего нужен ImgViewer, если JLabel нормально отображает картинки?
Возможно проблема именно в том что переопределен метод paint().

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


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