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

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

30.12.2016, 10:28. Показов 1682. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru