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

Как добавить некоторую область в имеющийся фрейм?

23.12.2012, 21:28. Показов 837. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть код:
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
package tg;
 
import java.awt.Color;
import java.awt.Graphics;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.JLabel;
 
public class TG extends JFrame {
    private GraphPanel g;
    
    
    
    public TG() {
        Vector<Double> d = new Vector<Double>();
        for (int x = 0; x <= 100; x++) {
            double qwe = x;
            d.add(qwe);
        }
        setTitle("Graphic");
        g = new GraphPanel(d);
        
        getContentPane().add(g);
        setBounds(0, 0, 600, 600);
    }
    public static void main(String[] args) {
        TG t = new TG();
        t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        t.setVisible(true);
    }
}
class GraphPanel extends JPanel {
 
    @Override
    public void setBackground(Color bg) {
        super.setBackground(Color.yellow);
    }
    private Vector<Double> data;
    public GraphPanel(Vector<Double> data) {
        this.data = data;
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.black);
        
        //прорисовка координат 
        g.drawString("0", getWidth()/2 + 3, getHeight()/2+12);
        for(int i=1;i<11;i++){
            //O(x)
            g.drawString(String.valueOf(i), getWidth()/2 + i*getWidth()/20+3, getHeight()/2+12);
            //O(y)
            g.drawString(String.valueOf(i), getWidth()/2+2, getHeight()/2 - i*getHeight()/20+12);
            //-O(x)
            g.drawString("-" + String.valueOf(i), getWidth()/2 - i*getWidth()/20+3, getHeight()/2+12);
            //-O(y)
            g.drawString("-" + String.valueOf(i), getWidth()/2+2, getHeight()/2 + i*getHeight()/20+12);
        }
        //прорисовка таблицы
        for (int i = 1; i < 20; i++) {
            g.drawLine(0, this.getHeight() - i * this.getHeight() / 20, this.getWidth(), this.getHeight() - i * this.getHeight() / 20);
        }
        for (int i = 1; i < 20; i++) {
            g.drawLine(this.getWidth() - i * this.getWidth() / 20, this.getHeight(), this.getWidth() - i * this.getWidth() / 20, 0);
        }
        g.setColor(Color.blue);
 
        double Kx = getWidth() / 8;
        double Ky = getHeight() / 8;
 
        double xo = -1;
        double yo = -1;
 
        double x = 0;
        for (Iterator<Double> it = data.iterator(); it.hasNext();) {
            double y = it.next().doubleValue();
            if (xo >= 0) {
                int x1 = (int) ((xo + 4) * Kx) + 3;
                int x2 = (int) ((x + 4) * Kx) + 3;
                int y1 = (int) (getHeight() - (yo + 4) * Ky - 2);
                int y2 = (int) (getHeight() - (y + 4) * Ky - 2);
                g.drawLine(x1, y1, x2, y2);
            }
            xo = x;
            yo = y;
            x += 1;
        }
    }  
}
Как мне сделать, то что на картинке? Надеюсь объяснил понятно. Заранее спасибо.
Миниатюры
Как добавить некоторую область в имеющийся фрейм?  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2012, 21:28
Ответы с готовыми решениями:

Как добавить панель на фрейм в интерфейсе?
Всем привет! Хочу сделать интерфейс для калькулятора, но не получается добавить панели на фрейм. Подскажите пожалуйста как можно...

Не получается добавить меню в фрейм
Есть у меня код, который открывает ХТМЛ страницу в браузере, но когда я пытаюсь добавить например фрейм, где будет меню для инструкции и...

Как можно спрятать некоторую область на листе
Т.е. чтобы она не печаталась

3
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
23.12.2012, 23:02
удалите
Java
1
2
getContentPane().add(g);
setBounds(0, 0, 600, 600);
напишите
Java
1
2
3
4
5
6
7
8
9
10
       setSize(600, 600);
        setLayout(new BorderLayout());
        add(g);
 
        JPanel pa = new JPanel(new FlowLayout());
        JButton bu = new JButton("Кнопка");
        JTextField tf = new JTextField();
        pa.add(tf);
        pa.add(bu);
        add(pa, BorderLayout.NORTH);
1
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 23
25.12.2012, 15:49  [ТС]
Дабы не создавать новую тему, спрошу здесь. С графикой, как видно, у меня проблемы, поэтому спрошу про новую задачу. Код:
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
package pkg12_1;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
 
class MainWindow extends Frame {
    Graphics2D gd;
    MainWindow(String name) {
        super(name);
        this.setSize(300, 300);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
 
        });
    this.addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent me){
          switch(me.getButton()){
              case MouseEvent.BUTTON1:{
                  int x = me.getX(), y = me.getY();
                  paint_1(gd, x, y, 1);
              }
          }
      }
    });
 
    }
 
    public void paint_1(Graphics g, int x, int y, int what) {
        if ((x > 0 && x < this.getWidth() / 3) && (y > 0 && y < this.getHeight() / 3)) {
            if(what == 1){
                int sx = 50;
                int sy = 50;
                g.drawLine(sx, sy, sx+50, sy+50);
            }else{
                
            }
         //1   
        } else if ((x > this.getWidth() / 3 && x < 2 * this.getWidth() / 3) && (y > 0 && y < this.getHeight() / 3)) {
            if(what == 1){
                int sx = this.getWidth()/3 + 50;
                int sy = 50;
            }else{
                
            }
         //2   
        }else if(( x> 2 * this.getWidth() / 3 && x<this.getWidth()) && (y>0 && y < this.getHeight() / 3)){
            if(what == 1){
                int sx = 2*this.getWidth()/3 + 50;
                int sy = 50;
            }else{
                
            }
         //3   
        }else if((x > 0 && x < this.getWidth() / 3) && (y>this.getHeight() / 3 && y<2*this.getHeight() / 3)){
            if(what == 1){
                int sx = 50;
                int sy = this.getHeight()/3 + 50;
            }else{
                
            }
         //4   
        }else if((x>this.getWidth() / 3 && x<2*this.getWidth() / 3) && (y>this.getHeight() / 3 && y<2*this.getHeight() / 3)){
            if(what == 1){
                int sx = this.getWidth()/3 + 50;
                int sy = this.getHeight()/3 + 50;
            }else{
                
            }
         //5   
        }else if((x>2*this.getWidth() / 3 && x<this.getWidth()) && (y>this.getHeight() / 3 && y<2*this.getHeight() / 3)){
            if(what == 1){
                int sx = 2*this.getWidth()/3 + 50;
                int sy = this.getHeight()/3 + 50;
            }else{
                
            }
            //6
        }else if((x>0 && x<this.getWidth() / 3) && (y>2*this.getHeight() / 3 && y<this.getHeight())){
            if(what == 1){
                int sx = 50;
                int sy = 2*this.getHeight()/3 + 50; 
            }else{
                
            }
            //7
        }else if((x>this.getWidth() / 3 && x<2*this.getWidth() / 3) && (y>2*this.getHeight() / 3 && y<this.getHeight())){
            if(what == 1){
                int sx = this.getWidth()/3 + 50;
                int sy = 2*this.getHeight()/3 + 50; 
            }else{
                
            }
            //8
        }else if((x>2*this.getWidth() / 3 && x<this.getWidth()) && (y>2*this.getHeight() / 3 && y<this.getHeight())){
            if(what == 1){
                int sx = 2*this.getWidth()/3 + 50;
                int sy = 2*this.getHeight()/3 + 50; 
            }else{
                
            }
            //9
        }
    }
    public void paint(Graphics g) {
        g.setColor(Color.GREEN);
        //1y
        g.drawLine(0, this.getHeight()/3, this.getWidth(), this.getHeight()/3);
        //2y
        g.drawLine(0, 2*this.getHeight()/3, this.getWidth(), 2*this.getHeight()/3);
        //1x
        g.drawLine(this.getWidth()/3, 0, this.getWidth()/3, this.getHeight());
        //2x
        g.drawLine(2*this.getWidth()/3, 0, 2*this.getWidth()/3, this.getHeight());
        
    }
}
public class Main {
    public static void main(String[] args) {
        MainWindow frame = new MainWindow("12_1");
        frame.setVisible(true);
    }
}
Когда нажимаю на квадрат (1,1), где я хочу нарисовать линию, в Netbeans вылетает ошибка java.lang.NullPointerException. Я так понимаю это, потому что gd не инициализирован. Как быть?
0
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 23
27.12.2012, 21:09  [ТС]
Ну же, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2012, 21:09
Помогаю со студенческими работами здесь

Как добавить код VB к имеющийся форме?
Есть форма, нужно добавить код к ней, подскажите пожалуйста как это сделать?

как добавить фрейм в шаблон
Есть шаблон сайта на фреймах выглядит он так http://i060.***********/1202/74/cfee63424c9bt.jpg его код &lt;html&gt; &lt;head&gt; ...

В чате есть фрейм с юзерами, как по клику вставить имя юзера в другой фрейм?
Это делается для приватных сообщений, ну типа такого(окно чата): Stas =&gt; : вобщим кодить еще много чего Stas =&gt;...

Добавить несколько изображений в плавающий фрейм
Доброго времени суток, дали вот такое задание. Все осилил кроме последнего пункта-&quot;Каждое из изображений, загружаемых во фрейм,...

Как к процедуре добавить область описания входящих переменных
Вопрос полностью нубский, но… Короч, дело такое: Есть процедура , например: procedure TForm1.Ololo(Sender: TObject); Как к нему...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru