С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 27.12.2014
Сообщений: 53

Добавить объект из другого класса

30.12.2016, 10:28. Показов 1630. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пробую создать игру понг. Создал 3 класса pong - сама игра, pad - ракетка и ball.
В классе pong создал JFrame и JPanel. Здесь всё в порядке. А вот как добавить из класса pad прямоугольник в класс pong?
Возможно, тут просто решается, но мне, как новичку, не понятно.
Попробовал добавить через window.add(pad1); но почему-то мне подчеркивает его красным и сообщает, что non-static variable pad1 cannot be referenced from a static content (строка 30). Что не так делаю, и может есть вариант проще?

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
package pong;
 
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
public class Pong {
 
    Pad pad1 = new Pad("pad1");
    
    public static void main(String[] args) {
        
        //creating a window
        JFrame window = new JFrame("PONG");
        window.setSize(800, 600);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //creating jpanel with bg
        JPanel pongPane = new JPanel(new BorderLayout());
        pongPane.setBackground(Color.BLUE);
        //set borders of the jlabel
        pongPane.setBorder(BorderFactory.createMatteBorder(15, 15, 15, 15, Color.ORANGE));
            
        
        //adding bg to our window as jpanel
        window.add(pongPane);
        window.add(pad1);
        
                
        //show the window
        window.setResizable(false);
        window.setVisible(true);
        
        
    }
класс Pad

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package pong;
 
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
 
 
public class Pad extends JPanel{
   
   String name;
   Pad(String name){
   this.name = name;
   }
           
  
   @Override
        public void paint(Graphics g){
        super.paintComponent(g);
        g.fillRect(10, 100, 10, 100);
        g.setColor(Color.GREEN);
    }
   
}
Добавлено через 6 минут
Добавил Pad pad1 = new Pad("pad1"); в main - получилось, но почему фон другой? Из-за того, что я использую JPanel в pad?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.12.2016, 10:28
Ответы с готовыми решениями:

Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса?
Подскажите, пожалуйста, как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса. Буду очень...

Ошибка при попытке использовать объект класса в определении другого класса
Муторное название получилось :scratch: Прошу помощи.... есть созданный класс работы со строкой: "MyString.h" class...

Ошибка компиляции (преобразование объекта класса в объект другого класса)
Друзья, добрый день! Не могу понять почему выдается ошибка компиляции... Прога преобразует доллары США в старые Британские фунты. Но...

2
35 / 35 / 54
Регистрация: 26.11.2016
Сообщений: 115
30.12.2016, 11:59
Цитата Сообщение от Roy0Bannon Посмотреть сообщение
g.fillRect(10, 100, 10, 100);
g.setColor(Color.GREEN);
Мне кажется, что Вы здесь, сначала заполняете прямоугольник, а потом ставите цвет.
Попробуйте поменять строки местами.
0
0 / 0 / 1
Регистрация: 27.12.2014
Сообщений: 53
30.12.2016, 12:23  [ТС]
Это спасибо, но вот почему у меня фон пропадает. Может, я не правильно делаю прямоугольник, может не через JPanel надо, а через тот же JLabel. Попробую еще так.
Короче получается, когда меняю местами строки 29 и 30 в pong классе, то фон отображается, а прямоугольник - нет. Я так понимаю, там две панели перекрывают одна другую. Как правильно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2016, 12:23
Помогаю со студенческими работами здесь

Использование в качестве поля класса указатель на объект другого класса
Ошибка в названии - "указателЯ" Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Возможно ли создать объект своего класса, который состоит из объектов другого класса?
Возможно ли создать объект своего класса, который состоит из объектов другого класса, например: TShip = class (TStaticObj) ...

Передача конструктору одного класса объект другого класса
Здравствуйте, кодеры. Столкнулся с проблемой. У меня есть 2 класса Camera и Game и соответствующие конструкторы. main.ccp ...

Вызов метода из другого класса, при этом нельзя создать объект второго класса и метод не статический
У меня есть 2 класса - один с формой и кнопкой на ней и другой класс, у которого есть метод void Method() Необходимо при нажатии на...

Свойству класса присвоить объект другого класса
Добрый день форумчане. Подскажите, пожалуйста. Свойствам класса можно при описании присваивать скалярные значения или массив. А как можно...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru