Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
14 / 2 / 0
Регистрация: 29.09.2018
Сообщений: 246

Почему MyComponent не виден?

18.06.2019, 17:32. Показов 1342. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import javax.swing.*;
import java.awt.*;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
 
import java.net.URL;
 
public class Circle  {
    public static void main(String[] args) {
        Circle circle=new Circle();
        JFrame frame=circle.getFrame();
 
 
    }
 
 
 
    private JFrame getFrame() {
        JFrame frame =new JFrame();
        frame.setTitle("Diameter/Radius");
        try {
            URL url = new URL("https://i.ytimg.com/vi/8aFR8BbVeng/maxresdefault.jpg");
            frame.setIconImage(new ImageIcon(url).getImage());
        }
        catch(Exception e){}
        JPanel p=new JPanel();
        Toolkit toolkit=Toolkit.getDefaultToolkit();
        Dimension dimension=toolkit.getScreenSize();
        frame.setBounds(0,0,dimension.width,dimension.height);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton b=new JButton("push me");
        b.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                p.setBackground(Color.orange);
                b.setBackground(Color.black);
            }
        });
        frame.getContentPane().add(BorderLayout.NORTH,b);
        frame.getContentPane().add(BorderLayout.CENTER,new MyComponent());
        frame.add(p);
        return frame;
    }
    class MyComponent extends JComponent{
        @Override
        protected void paintComponent(Graphics g){
            Font font1=new Font("Franklin Gothic Medium",Font.PLAIN,20);
            Graphics2D g2=(Graphics2D)g;
            g2.setFont(font1);
            Point2D p1=new Point2D.Double(50,50);
            Point2D p2=new Point2D.Double(950,50);
            g2.drawString("ТЫ МЫЛ ЖОПУ?",20,20);
            Line2D line=new Line2D.Double(p1,p2);
            g2.draw(line);
            Ellipse2D elipse=new Ellipse2D.Double(100,100,100,100);
            g2.setPaint(Color.red);
            g2.fill(elipse);
            g2.fillRect(900,00,50,20);
            try {
                URL imageUrl=new URL("https://pbs.twimg.com/media/DszHv-tWwAAFndd.jpg");
                Image image = new ImageIcon(imageUrl).getImage();
                g2.drawImage(image,300,100,null);
            }
            catch(Exception e){}
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2019, 17:32
Ответы с готовыми решениями:

Почему не виден указатель?
Необходимо создать програму которая читает из файла кол-во записей в массиве структур,создает динамический массив,а потом получает из файла...

почему Samsung GT-S5230 е виден на ПК ?
Подскажите пожалуйста. С диска без проблем установлены драйвера и сама программа для работы с ПК. Проблема в том что ПК не видит телефона...

Почему виден класс ресурсов?
Скорее всего вопрос по java, но все равно прошу помощи. За счет чего компилятор java видит класс ресурсов R. package...

6
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
18.06.2019, 18:15
Попробуй вставить это в main
Java
1
frame.repaint();
0
14 / 2 / 0
Регистрация: 29.09.2018
Сообщений: 246
18.06.2019, 22:17  [ТС]
Не помогло, к сожалению
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
18.06.2019, 23:28
Лучший ответ Сообщение было отмечено Anton8800 как решение

Решение

Anton8800, Line 47: frame.add(p);

Java
1
2
3
        frame.getContentPane().add(BorderLayout.NORTH, b);
        frame.getContentPane().add(BorderLayout.CENTER, new MyComponent());
        frame.getContentPane().add(BorderLayout.SOUTH, p);   // <---------------------------------------
1
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
19.06.2019, 13:07
Kukstyler, Скажите вы практик или теоретик ?
это то конечно работать будет
Java
1
 frame.getContentPane().add(BorderLayout.CENTER, new MyComponent());
Классы с графикой тоже прекрасно добавляются так, но на практике если в вашем приложении есть поток и вы так накладываете графику ваше приложение порвет беспричинными тормозами. Это уже проверено не единожды и в одном проекте стоило недельного поиска ответа которого нет.
Всю графику делайте в Bitmap, всю это значит всю, если конечно ваш проект это проект а не поделка на вечер.

Что мешает нарисовать Bitmap и потом добавить его как фон через тот же setIcon

код для наглядности.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void drawArrow(JLabel jl, int s, int d)
    {
        BufferedImage bf = new BufferedImage(jl.getWidth(), jl.getHeight(), BufferedImage.TYPE_INT_ARGB);
        Graphics g = bf.createGraphics();
        Graphics2D g2 = (Graphics2D)g;
        Graphics2D g3 = (Graphics2D)g;
        g2.setStroke(new BasicStroke((float) 3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
        AffineTransform affineTransform = g2.getTransform();
        g2.setColor(new Color(0,0,0));
        g2.rotate(Math.toRadians(s), jl.getWidth()/2, jl.getHeight()/2);
        g2.drawLine(jl.getWidth()-jl.getWidth()/8, jl.getHeight()/2, jl.getWidth()-jl.getWidth()/2, jl.getHeight()/2);
        g2.setTransform(affineTransform);
        g3.setColor(new Color(0,0,255));
        g3.rotate(Math.toRadians(d), jl.getWidth()/2, jl.getHeight()/2);
        g3.drawLine(jl.getWidth()-jl.getWidth()/8, jl.getHeight()/2, jl.getWidth()-jl.getWidth()/2, jl.getHeight()/2);
        g3.setTransform(affineTransform);
        g2.dispose();
        g3.dispose();  
        jl.setIcon(new ImageIcon(bf));
        jl.repaint();
        bf.flush();
    }
0
Заблокирован
19.06.2019, 13:29
Anton8800, я смог решить вашу проблему и у меня показалась картинка с Реввой и предложение о гигиене. Все дело было в том, что вы создавали пустую панель, а надо было вместо нее свою добавлять. В итоге у вас получилось наслоение двух панелей. Осталось поправить код- это ваша задача, как программиста. Насчет наслоения скажу так- вы конечно можете сразу абсолютные панели добавить и каждую скрывать-открывать их под друг другом, но сразу две панели не получится отобразить. И да, для читаемости, попробуйте в разные файлы ложить классы.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
19.06.2019, 22:48
Nidl, не понимаю вопроса. Если Вы о том, согласен ли я с кодом ТС, то уверяю - сей код мне совсем не нравится.
А касаемо представленного мной "исправленного" кода - то это ответ ТС-у на его вопрос, а не правильное решение.
Как по мне, сей код надо вообще целиком переписАть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2019, 22:48
Помогаю со студенческими работами здесь

Почему не виден сайт в яндексе ?
Сайт не виден по релевантным запросам. Запросы - &quot;кредит залог&quot; , &quot;кредит под залог&quot;. В title, H1-H4, в тексте - ключевики...

Почему внутри екзешника не виден IL код?
Почему при открытии блокнотом любого екзешника скомпилированного любым компилятором любого дотнетского ЯПа вместо кода на CIL я вижу...

Не понимаю,почему не виден блок с текстом
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt; &lt;meta charset=&quot;utf-8&quot;&gt; &lt;title&gt;Untitled...

Почему открытый интерфейс не виден из другого пакета?
Подскажите, кому не сложно, пожалуйста. Почему public interface не реализуется в другом пакете? Реализуется только если использовать...

Почему не виден тиц? Правильность позиций в sespider..
Вопрос 1. Проверяю основные параметры сайта через site-auditor, пишет что есть тиц. Захожу на сайт, установлен яндекс.бар - тиц 0. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru