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

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

26.04.2013, 01:25. Показов 1462. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru