Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
1

Сетка из JPanel вешает процессор

23.05.2014, 01:05. Показов 958. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Создаю сетку из JPanel'ов размером 10х10. Загрузка процессора в районе 60 процентов. Никакой перерисовки не происходит. Если установить 200х200 панелей, то программа тупо не закрывается, а панельки даже не прорисовываются. В чём проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2014, 01:05
Ответы с готовыми решениями:

Адаптировать запрос. Вешает процессор
Здравствуйте форумчане. На новостном сайте есть опция вывода 3-х новостей похожих по тегам с...

Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху
Здравствуйте. У меня есть панель fon на которой у меня картинка с фоном и 15 панелей на которых...

Как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel
Подскажите как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel,...

Удаление JPanel кнопкой на этом же JPanel
Есть JPanel объекты, которые представляют собой панельки с какой - то информацией, на них есть...

8
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
23.05.2014, 02:05 2
Ищите проблему в 10й строке кода.
0
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
23.05.2014, 13:44  [ТС] 3
Цитата Сообщение от reisal78 Посмотреть сообщение
Ищите проблему в 10й строке кода.
Очень содержательный ответ.

Добавлено через 4 минуты
Цитата Сообщение от reisal78 Посмотреть сообщение
Ищите проблему в 10й строке кода.
Java
1
2
3
4
5
6
7
8
9
10
11
Cell[][] cells = field.getField();
        for (int x = 0; x < cells.length; x++) {
            for (int y = 0; y < cells[0].length; y++) {
                JPanel jCell = new JCell(cells[x][y], 50, 50);
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.gridx = x;
                constraints.gridy = y;
                constraints.fill = GridBagConstraints.NONE;
                panel.add(jCell, constraints);
            }
        }
На любой машине этот код жрёт процессор.
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
23.05.2014, 14:28 4
Recreate, это был намек, что не плохо бы код показать, видно слишком тонкий

Покажите еще что делает класс JCell
0
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
23.05.2014, 14:50  [ТС] 5
Цитата Сообщение от reisal78 Посмотреть сообщение
Покажите еще что делает класс JCell
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
public class JCell extends JPanel {
    private Cell cell;
 
    public JCell(Cell cell, int xSize, int ySize) {
        cell.addPropertyChangeListener(new CellListener());
        this.cell = cell;
        setPreferredSize(new Dimension(xSize, ySize));
        setDoubleBuffered(true);
    }
 
    private class CellListener implements PropertyChangeListener {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            Cell cell = (Cell) evt.getSource();
            //при возникновении события на модели будет вызываться обработка/перерисовка
 
        }
    }
 
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        setBackground(Color.BLACK);
        LineBorder border = new LineBorder(Color.WHITE, 1);
        setBorder(border);
    }
}
Вообщем в при создании компонента JCell мы в него кладём Cell из модели и вешаем слушатель на модель. Далее при изменении модели каждый компонент привязанный к Cell модели должен будет перерисовываться по отдельности(т.е. перерисовка вызывается там, где произошло событие). Но даже не привязывая модель и используя обычные JPanel у меня процессор просто офигевает.
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
23.05.2014, 15:24 6
Recreate,
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
import javax.swing.*;
import java.awt.*;
 
/**
 * Created by Игорь on 23.05.2014.
 */
public class JPaneGrid  extends JFrame{
    public JPaneGrid() throws HeadlessException {
        setTitle("test");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
        JPanel panel = new JPanel(new GridBagLayout());
        setContentPane(panel);
        for (int i = 0; i < 200; i++) {
            for (int j = 0; j < 200; j++) {
                JPanel jCell = new JPanel();
                jCell.setPreferredSize(new Dimension(50, 50));
                jCell.setBackground(Color.BLUE);
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.gridx = i;
                constraints.gridy = j;
                constraints.fill = GridBagConstraints.NONE;
                panel.add(jCell, constraints);
            }
        }
        pack();
    }
 
    public static void main(String[] args) {
        new JPaneGrid();
    }
}
А вот такой код насколько у вас процессор загружает?
0
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
23.05.2014, 16:00  [ТС] 7
Цитата Сообщение от reisal78 Посмотреть сообщение
А вот такой код насколько у вас процессор загружает?
http://imglink.ru/pictures/23-... 2f0c5d.jpg
Скачки до 80% во время растяжения на весь экран.
Через некоторое время всё свалилось в ноль. В чём соль?
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
23.05.2014, 16:37 8
Просто я, честно говоря, не вижу места где может быть проблема в вашем коде... а вот тот код, что я попросил запустить у меня около 10% на проц грузит
0
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
23.05.2014, 21:44  [ТС] 9
Цитата Сообщение от reisal78 Посмотреть сообщение
Просто я, честно говоря, не вижу места где может быть проблема в вашем коде... а вот тот код, что я попросил запустить у меня около 10% на проц грузит
У меня одинаковая загрузка что на рабочей машине, что дома. Быть может разные версии jdk используются?
0
23.05.2014, 21:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2014, 21:44
Помогаю со студенческими работами здесь

Замена JPanel на JPanel в JFrame
У меня есть 3 класса. Первый класс Main наследуется от JFrame и в конструкторе установка размера и ...

JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Где ошибка?
JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Label label=new JLabel('...

Вешает ноутбук
Прикиньте, при запускепрограммы, содержащей следующие строки, пошли конкретные тормоза. Что и...

Вешает сеть
У меня раньше был подключен медиаконвертер в сетевой свитч, потом по непонятной мне причине по...

Вьюшка вешает пользователей
Добрый день! Имеется база 20000 документов, доступ к документам Read Access, вьюшка...

DDL-ка вешает программу
Привет всем, снова я ... Случилось следующее, создал процедуру в длл, гружу ее из программы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru