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

Не отрисовывается кастомный JComponent (картинка)

28.07.2019, 00:04. Показов 903. Ответов 3

Author24 — интернет-сервис помощи студентам
Попытался создать свой класс JImage, наследующий JComponent и содержащий в себе картинку. Окно приложения запускается, но не видно самой картинки. Код ниже.

Главный класс:
Java
1
2
3
4
5
public class Test {
 public static void main(String[] args) {
  Window window = new Window();
 }
}
Класс с фреймом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Window extends JFrame {
 public Window() {
  setSize(1000,500);
  setLayout(null);
  setVisible(true);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
 
  JImage img = new JImage();
  img.setLayout(null);
  img.setSize(100, 100);
  img.setLocation(100,100);
  img.setImage("img.png");
  img.setVisible(true);
 
  add(img);
 }
}
Класс с компонентом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class JImage extends JComponent {
 Image img;
 
 public JImage () {}
 
 @Override
 protected void paintComponent(Graphics g) {
  super.paintComponent(g);
  g.drawImage(getImage(), getLocation().x, getLocation().y, getSize().width, getSize().height, null);
 }
 
 void setImage(String filePath) {
  try {
   this.img = ImageIO.read(new File(filePath));
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 Image getImage() {
  return this.img;
 }
}
Помогите, пожалуйста, решить данную проблему. Заранее спасибо.

P.S. Файл с картинкой существует, проверил в проводнике в корне проекта, проверил через exists(new File(filePath))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2019, 00:04
Ответы с готовыми решениями:

Почему не отрисовывается картинка?
Написал класс, наследующий ViewSurface MainView. Написал метод onDraw, в котором поле заливается...

Qt с++ картинка постоянно отрисовывается
Ребята помогите пожалуйста, картинки один раз перемешивались и орисовывались и всё... а у меня эти...

Взаимодействие JComponent-ов
помогите пожалуйста создаю игру пинг понга и мне нужно реализовать отбивание шариков от стенок,...

Перемещение JComponent
здравствуйте наткнулся на проблему при которой создаю объект шарика который наследует JComponent...

3
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
28.07.2019, 00:22 2
А на кой хрен тебе это надо?
0
0 / 0 / 0
Регистрация: 27.07.2019
Сообщений: 2
28.07.2019, 00:25  [ТС] 3
Gungala Это у меня такой извращённый способ добавить картинку в окно. Суть вопроса не меняет.
0
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
28.07.2019, 14:59 4
В таком виде работает, но всё равно полная бредятина, как по-моему
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
class Window extends JFrame {
    public Window() {
        setSize(1000, 500);
        setLayout(null);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
        JImage img = new JImage("franky.jpg");
        img.setLayout(null);
        img.setBounds(0, 0, 100, 100);
 
        add(img);
        repaint();
    }
}
 
class JImage extends JComponent {
    Image img;
 
    public JImage(String filePath) {
        setImage(filePath);
    }
 
    @Override
    public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, 100, 100, null);
    }
 
    void setImage(String filePath) {
        try {
            this.img = ImageIO.read(new File(filePath));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    Image getImage() {
        return this.img;
    }
}
0
28.07.2019, 14:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2019, 14:59
Помогаю со студенческими работами здесь

Отображение JComponent
Имеется класс, унаследованный от JComponent. Соответственно, в нём что-то рисуется, иногда это...

Не видно JComponent на JPanel
Как -то пропустил тему по изучению Swing. Ради эксперимента решил написать простенькие часы....

Отрисовка в JPanel несколько JComponent
Приветствую. Есть два класса наследующиеся от JComponent, рисующие координатные оси и график. И...

JComponent: сгенерировать событие вручную (на примере FocusEvent)
Не раз возникала необходимость сгенерировать событие вручную, но не знаю как. Сейчас например нужно...


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

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