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

Непрямоугольные формы

21.11.2016, 17:32. Показов 395. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня! Уважаемые форумчане подскажите, пожалуйста, как можно реализовать GUI с содержанием нескольких рисунков и сделать чтобы в области рисунков обрабатывались события. Пошарив в интернете, нашел вариант с созданием прозрачных JLayeredPane, в которых и рисовал, а обработчик событий привязывается к JLayeredPane которая имеет прямоугольную форму. Но хотелось создать круг и реакцию мыши при наведении именно по границе круга.
Вот что у меня получилось:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
 
public class GUITest extends javax.swing.JFrame {
 
    private static final long serialVersionUID = 1L;    
    
    class Circule extends JComponent
    {
 
        private static final long serialVersionUID = 1L;
        private Color color;
        private String text;
        // параметры: цвет и тип фигуры
        void Figure(Color color, String text) {
            this.color = color;
            this.text = text;
           // setOpaque(false);
        }
        public void paint(Graphics g) {
            // прорисовка фигуры
            g.setColor(color);
            g.fillOval(0, 0, 90, 90); 
            g.setColor(Color.black);
            g.drawString(text, 25, 50);
        }
    }
 
 
    public GUITest() {
        super("Тестовое");
        MyAction list = new MyAction();
        JLayeredPane lp = getLayeredPane();
        Circule figure2 = new GUITest.Circule();
        Circule figure3 = new GUITest.Circule();
        figure2.Figure(Color.blue, "Figure 2");
        figure2.setBounds(300, 40, 120, 120);
        figure3.Figure(Color.red, "Figure 3");
        figure3.setBounds(80, 40, 120, 120);
        lp.add(figure2, JLayeredPane.POPUP_LAYER); 
        lp.add(figure3, JLayeredPane.POPUP_LAYER);
        figure2.addMouseListener(list);
  
        initComponents();
    }
    
    
    public class myLabel extends javax.swing.JLabel{
    }                        
    private void initComponents() {
 
        jLabel1 = new myLabel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(800, 600));
        setSize(new java.awt.Dimension(800, 600));
        getContentPane().setLayout(null);
 
        jLabel1.setText("Мой новый лабел!!!!");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(80, 80, 120, 14);    
        
        pack();
    }
    public static void main(String args[]) {
         try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUITest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUITest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUITest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUITest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
 
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUITest().setVisible(true);
            }
        });
    }
class MyAction implements MouseListener {
 
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        JOptionPane.showMessageDialog(null,
                "реакция",
                "Output",
                JOptionPane.PLAIN_MESSAGE);
    }
 
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    
}   
    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 17:32
Ответы с готовыми решениями:

Прозрачность формы, при наведении мыши на кнопку реализовать изменение её положения относительно формы с невозможностью выхода за границы формы
доброй ночи, уважаемые программисты, студенты,а также любители программировать. помогите,...

Автоматический перенос данных поля одной формы в поле другой формы
Добрый вечер! Очень нужна помощь знающих людей. Создаю базу больницы для курсовой работы и...

Как сделать видимыми некоторые элементы главной формы из дочерней формы?
Как сделать видимыми некоторые элементы главной формы (Image1.Visibility = Visibility.Visible) из...

Запись в Combobox одной формы из поля Textbox другой формы в Excel
Здравствуйте, уважаемые специалисты! Решаю задачу и выходит проблема. Есть лист &quot;Должности&quot; со...

0
21.11.2016, 17:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2016, 17:32
Помогаю со студенческими работами здесь

Скрытие строк Таблицы формы через условное оформление управляемой формы
ранее было раскраска строк Таблицы по условному оформлению - все работало. решил поставить...

Как изменять размеры элементов формы при изменении самой формы
Есть форма, когда изменяется её размер нужно чтобы все элементы изменялись пропорционально вместе с...

Открытие (окна) второй формы всегда по центру относительно первой (формы)
Форма №1 - основное окно программы (можно свободно перемещать по экрану). Форма №2 - окно настроек...

Как из второй формы получить доступ ко всем формам первой формы?
Как?

Как из дочерней формы получить доступ к элементу управления родительской формы
Есть две формы: родительская(Form1) и дочерняя(Form2). В родительской форме(Form1) находятся...

Дублирование записи главной формы вместе со всеми записями подчиненной формы
есть таблица: билет поля: идбилет; идклиент; идзалог подчиненная таблица: залог поля: идбилет;...


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

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