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

Прямоугольник

26.04.2013, 01:25. Показов 1406. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Хочу написать программу в которой задаешь координаты верхнего левого угла, ширину, высоту и по нажатию кнопки выводит в окно прямоугольник.
Вот что я написал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class DeviceWithKeys extends JPanel {
int x,y,z,q;
    
     public void Rect(int a,int b,int h,int n){
         x=a;
         y=b;
         z=h;
         q=n;
         }
     
    int KeysNumber = 5;
    public void paint(Graphics g){
        g.drawRect(x, y, z, q);
//        g.drawOval(5, 5, 10, 10);
    }
}
и второй класс:
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
public class Laba3 extends DeviceWithKeys {
 
    public static void main(String[] args) {
         final JFrame frame = new JFrame("start");   
         JButton btn =  new JButton("Rect");
         final JTextField txt = new JTextField();
         final JTextField txt1 = new JTextField();
         final JTextField txt2 = new JTextField();
         final JTextField txt3 = new JTextField();
         JPanel panel = new JPanel();
         JPanel panel1 = new JPanel();
         panel.add(btn);
         panel1.add(txt);
         panel1.add(txt1);
         panel1.add(txt2);
         panel1.add(txt3);
         frame.getContentPane().add(panel,BorderLayout.EAST);
         frame.getContentPane().add(panel1,BorderLayout.SOUTH);
         panel.setLayout(new GridLayout(1, 1));
         panel1.setLayout(new GridLayout(1, 4));
         
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//         DeviceWithKeys devicekeys = new DeviceWithKeys();          
//         frame.add(devicekeys);
         frame.setSize(600, 600);
         frame.setVisible(true);
         
         btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Laba3 f=new Laba3();
                String str = txt.getText();
                f.x=Integer.parseInt(str);
                String str1 = txt1.getText();
                f.y=Integer.parseInt(str);
                String str2 = txt2.getText();
                f.z=Integer.parseInt(str);
                String str3 = txt3.getText();
                f.q=Integer.parseInt(str);
                
                DeviceWithKeys devicekeys = new DeviceWithKeys();
                devicekeys.Rect(f.x, f.y, f.z, f.q);
                frame.add(devicekeys);
            }
                
                             
            
        });
        
    
}
}
не судите строго, что я делаю не так и как надо?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2013, 01:25
Ответы с готовыми решениями:

Прямоугольник выделения
Подскажите пожалуйста как реализовать прямоугольник выделения ? Вот

Двигающийся прямоугольник
Думаю написать простятскую программулину, в которой просто движется прямоугольник, прямоугольник рисовать научился а так чтобы он...

Создать прямоугольник, залитый градиентом
Всем здравствуйте! есть такой код. можете подсказать как сделать его градиентным? и в координатах hsv(хотя бы и без них). Или же можно...

2
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
26.04.2013, 13:26
можно как то так
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
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
 
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
 
public class DrawRect extends JFrame {
    
    private List<Rectangle2D> rectangles;
    
    public DrawRect() {
        setTitle("DrawRect");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        rectangles = new ArrayList<>();
        final DrawingPane pane = new DrawingPane();
        
        JPanel topPanel = new JPanel();
        topPanel.add(new JLabel("X coord:"));
        final JTextField xInput = new JTextField(5);
        topPanel.add(xInput);
        topPanel.add(new JLabel("Y coord:"));
        final JTextField yInput = new JTextField(5);
        topPanel.add(yInput);
        topPanel.add(new JLabel("Width:"));
        final JTextField wInput = new JTextField(5);
        topPanel.add(wInput);
        topPanel.add(new JLabel("Height:"));
        final JTextField hInput = new JTextField(5);
        topPanel.add(hInput);
        
        JPanel buttonPanel = new JPanel();
        JButton drawButton = new JButton("Draw");
        drawButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int x = Integer.parseInt(xInput.getText());
                int y = Integer.parseInt(yInput.getText());
                int w = Integer.parseInt(wInput.getText());
                int h = Integer.parseInt(hInput.getText());
                Rectangle2D r2d = new Rectangle2D.Double(x, y, w, h);
                rectangles.add(r2d);
                pane.repaint();
            }
        });
        buttonPanel.add(drawButton);
        JButton clearButton = new JButton("Clear");
        clearButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                rectangles.clear();
                pane.repaint();
            }
        });
        buttonPanel.add(clearButton);
        
        add(pane, BorderLayout.CENTER);
        add(topPanel, BorderLayout.NORTH);
        add(buttonPanel, BorderLayout.SOUTH);
        setLocationRelativeTo(null);
        pack();
    }
 
    public static void main(String[] args) {
        new DrawRect().setVisible(true);
    }
    
    private class DrawingPane extends JComponent {
        DrawingPane() {
            setPreferredSize(new Dimension(600, 400));
            getContentPane().setBackground(Color.WHITE);
        }
        @Override
        protected void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;         
            for (Rectangle2D r : rectangles) {
                g2.draw(r);
            }
        }
    }
}
1
0 / 0 / 2
Регистрация: 23.04.2013
Сообщений: 13
29.04.2013, 23:22  [ТС]
спасибо, вот то что у меня получилось, с помощью наследования:
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
import java.awt.Graphics;
import java.awt.Graphics;
import javax.swing.JPanel;
 
public class DeviceWithKeys extends JPanel {
    int keysNumber = 5;
    int power;
    int deviceWidth, deviceHeight;
 
    public DeviceWithKeys(int keysNumber, int power, int deviceWidth, int deviceHeight){
        this.keysNumber=keysNumber;
        this.power=power;
        this.deviceWidth=deviceWidth;
        this.deviceHeight=deviceHeight;
    }
 
  
    public void rect(int keysNumber, int power, int deviceWidth, int deviceHeight){
        this.keysNumber=keysNumber;
        this.power=power;
        this.deviceWidth=deviceWidth;
        this.deviceHeight=deviceHeight;
    }
     
    public void paint(Graphics g){
        g.drawRect(keysNumber, power, deviceWidth, deviceHeight);
      
    }
   
 
}
и собственно класс где создается объект класса и вызывается соответствующий метод rect:
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
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
 
public class Laba3 {
 
    public static void main(String[] args) {
         final JFrame frame = new JFrame("start");   
         JButton btn =  new JButton("Rect");
         JButton btn1 = new JButton("Keybord");
         final JTextField txt = new JTextField();
         final JTextField txt1 = new JTextField();
         final JTextField txt2 = new JTextField();
         final JTextField txt3 = new JTextField();
         JPanel panel = new JPanel();
         JPanel panel1 = new JPanel();
         panel.add(btn);
         panel.add(btn1);
         panel1.add(txt);
         panel1.add(txt1);
         panel1.add(txt2);
         panel1.add(txt3);
         frame.getContentPane().add(panel,BorderLayout.EAST);
         frame.getContentPane().add(panel1,BorderLayout.SOUTH);
         panel.setLayout(new GridLayout(1, 1));
         panel1.setLayout(new GridLayout(1, 4));
         
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         frame.setSize(600, 600);
         frame.setVisible(true);
         
         btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str = txt.getText();
                int x=Integer.parseInt(str);
                String str1 = txt1.getText();
                int y=Integer.parseInt(str1);
                String str2 = txt2.getText();
                int z=Integer.parseInt(str2);
                String str3 = txt3.getText();
                int q=Integer.parseInt(str3);
                
                DeviceWithKeys deviceKeys = new DeviceWithKeys(x,y,z,q);
                deviceKeys.rect(x, y, z, q);
                frame.add(deviceKeys);
 
            }
                
                             
            
        });
        
 
        
    
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2013, 23:22
Помогаю со студенческими работами здесь

Создать апплет, рисующий прямоугольник
Создать апплет, рисующий прямоугольник. Рисование должно происходить следующим образом: удерживая левую кнопку мыши пользователь орисует...

Нарисовать прямоугольник по данным, введенным через JOptionPane
Здравствуйте! Помогите разобраться пожалуйста. 1) Создайте окно, в котором выведите прямоугольник с параметрами, полученными от...

Создать апплет, содержащий анимацию (прямоугольник движется вращаясь)
Помогите пожалуйста решить программу к зачету. Пишем в Netbeans. Перепечатывайте задание на форум.

Создать окно, в котором рисуется прямоугольник. Координаты вершин вводятся вручную
Здравствуйте! Подскажите пожалуйста, как в Eclipse создать окно с кнопкой чтобы при нажатии на нее выводился прямоугольник. 4 координаты...

Написать программу, которая будет выводить на экран прямоугольник с каким-нибудь текстом
Помогите написать программу, которая будет выводить на экран прямоугольник с каким-нибудь текстом; каждые 15 секунд в новом месте экрана.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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