Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

Нова тема
Изчертаванена ГРАФИКА в SWING
Тази тема е погледната 295 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 31.08.2008 11:11
mcmixo
Чирак

Мнения: (3)

Добърден Експеримнтирам снаправата на графичн SWING приложения и искам да направя нещо като програма за изчертаване на графики чрез бутони

Наслагах няколко компонента на немога да свържа графичният метод със същността на програмата


CODE
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;





public class Grafic_function extends JPanel{

 
 
public JMenuBar create_m_b(){
 
 
JMenuBar osnovna = new JMenuBar();
    
    
JMenu nachalo = new JMenu("****");
    
JMenu sreda = new JMenu("****");
    
JMenu krai = new JMenu("****");          
     
        
osnovna.add(nachalo);
        
osnovna.add(sreda);
        
osnovna.add(krai);
 
 
JMenuItem a =new JMenuItem("");
 
JMenuItem b =new JMenuItem("");
 
     
nachalo.add(a);
     
nachalo.add(b);
 
 
JMenuItem c =new JMenuItem("");
 
JMenuItem  d=new JMenuItem("");
   
      
sreda.add(c);
      
sreda.add(d);
      
 
JMenuItem  e=new JMenuItem("");
 
JMenuItem  f=new JMenuItem("");
  
      
krai.add(e);
      
krai.add(f);
  
  
  
return osnovna;
 
 
}
 

public JPanel create_l_p() {
     
JPanel all = new JPanel();

   
JPanel r_button = new JPanel();
      
      
JRadioButton sin = new JRadioButton("SIN");
         
sin.setSelected(true);
         
sin.setSize(50,50);
         
sin.setLocation(10,10);
      
      
JRadioButton cos = new JRadioButton("COS");
         
cos.setSize(50,50);
         
cos.setLocation(10,20)
      
      
JRadioButton tg = new JRadioButton("TG");
          
tg.setSize(50,50);
          
tg.setLocation(10,30);
      
      
JRadioButton cotg = new JRadioButton("COTG");  
           
cotg.setSize(50,50);
           
cotg.setLocation(10,40);
           
           
           
ButtonGroup p_all_b_g = new ButtonGroup();
           
             
p_all_b_g.add(sin);
             
p_all_b_g.add(cos);
             
p_all_b_g.add(tg);
             
p_all_b_g.add(cotg);


                  
all.add(sin);
                  
all.add(cos);
                  
all.add(tg);
                  
all.add(cotg);


 
 
 
        





return all;










}



 
*******************************************

public void paintComponent(Graphics g) {
          
super.paintComponent(g);

         
         
g.drawLine(10,20,30,40);
  
}

************************************************

 
 
 

       
        

 
 
 
 
private  static  void createAndShowGUI(){
 
 
JFrame frame = new JFrame("[=] Hello World [=]");
 
     

       
Grafic_function demo = new Grafic_function();
        

        
        
frame.setJMenuBar(demo.create_m_b());
        
frame.setContentPane(demo.create_l_p());
     


      
frame.setSize(400, 400);
      
frame.setVisible(true);

 
 
 
}
 


public static void main(String[] args) {
      
SwingUtilities.invokeLater(new Runnable() {
          
public void run() {
              
createAndShowGUI();
          
}
       })
;
  
}




}


СЪС ЗВЕЗДИЧКИ СЪМ ОТБЕЛЯЗАЛ ГРАФИЧНИЯ метод

дори и ако създам обект от типа Graphics2D пак незнам как да го свържа към програмата така че да ми го визуализиа при компилирането

Оставям метода празен и без нищо програмата се компилира и работи

Ще съм ви благодарен ако ми кажете как да свържа метода с програмата така че когато напиша

g.drawLine(10,20,30,40); Например да ми я изчертава




ПРОЧЕТОХ ВСИЧКИ УРОЦИ В САИТО НА SUN  и пак не намерих решение

ако се налага само да изчертавам без да имам бутони става но кагато трябва да слагам компоненти и бутони и сичко друго не се получава

Ще съм благодарен ако помогете с един фрагмент код не искам много предполагам


 
---------------------------
Потребител от: 31.08.08 | Всички уроци от mcmixo | Всички скриптове от mcmixo
напиши eMail напиши лично съобщение виж профила на mcmixo
Публикувано на: 31.08.2008 14:23
silver_fox
Калфа

Мнения: (14)

//В метода createAndShowGUI() сложи това:

private  static  void createAndShowGUI(){
    JFrame frame = new JFrame("[=] Hello World [=]");
    Grafic_function demo = new Grafic_function();
   
    frame.setJMenuBar(demo.create_m_b());
   
    frame.add(demo, BorderLayout.CENTER);
    frame.add(demo.create_l_p(),BorderLayout.SOUTH );
   
    frame.setSize(400, 400);
    frame.setVisible(true);
 
}


 
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 31.08.2008 14:47
mcmixo
Чирак

Мнения: (3)

МНого ти благодаря получи се но ще ми обясниш ли защо се получава точно така 

 


 
---------------------------
Потребител от: 31.08.08 | Всички уроци от mcmixo | Всички скриптове от mcmixo
напиши eMail напиши лично съобщение виж профила на mcmixo
Публикувано на: 31.08.2008 18:27
silver_fox
Калфа

Мнения: (14)

Цитат от mcmixo@31.08.2008 14:47:
МНого ти благодаря получи се но ще ми обясниш ли защо се получава точно така

Значи когато добавяш компоненти към JFrame той използва manager за да ги разположи. "Border layout manager" е подразбиращ за JForm. Какво прави този код?
 frame.add(demo, BorderLayout.CENTER);
Разполага панела "demo" в центара на "JFrame". Но това е същото като това: "frame.add(demo)" тоест по-подразбиране ги слага в центара и го разтяга. Затова пробвай това:
    frame.add(demo);
    frame.add(demo.create_l_p());
    frame.add(new JButton("test"));
И ще видиш, че бутона "test" e закрил всичко!
А сега пробвай това :

    frame.add(demo);
    frame.add(demo.create_l_p(), BorderLayout.SOUTH);
    frame.add(new JButton("test"), BorderLayout.WEST);

Разбира се има и други мениджъри на разположението:"GridLayout, FlowLayout, GridBagLayout" кито можеш да ползваш

frame.setLayout(new FlowLayout());
    for(int i = 0; i < 10; i++)frame.add(new JButton("Button"+i));

Метода add() има втори аргумент "layout constraint"
frame.add(component, layout constraint)които е удобен за "BorderLayout" А метода paintComponent(Graphics g) се вика автоматично когато има нужда от изчертаване. Ти не го викаш дирено.


 
Това мнение е редактирано от silver_fox на 31.08.2008 18:49
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 31.08.2008 19:07
mcmixo
Чирак

Мнения: (3)

Велик си много ми помогна


 
---------------------------
Потребител от: 31.08.08 | Всички уроци от mcmixo | Всички скриптове от mcmixo
напиши eMail напиши лично съобщение виж профила на mcmixo
Публикувано на: 31.08.2008 19:26
silver_fox
Калфа

Мнения: (14)

Ще ми е интересно да я погледна тази програма когато е готова.


 
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   





IT-PLACE.NET © 2004 - 2008