# NetBeans 5.5 - Variablendeklaration



## crappysnafu (7. Mai 2007)

Hallo
Ich habe folgendes Problem, welches zu lösen ich zu blöd bin (ich liebe Deutsch  ).

Erstma den Code

```
/*
 * MainFrame.java
 *
 * @author Team Corona
 * @version 0.1
 * Created on 4. Mai 2007, 11:10
 */

package finternisrechner;

import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;

public class MainFrame extends javax.swing.JFrame {
    
    Kalender kalFrame = new Kalender();
    About about = new About();
    
    /** Creates new form MainFrame */
    public MainFrame() {
        
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
        } catch( Exception e ) { e.printStackTrace(); }
        
        initComponents();
        
     }
        
        
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        layoutStyle1 = new org.jdesktop.layout.LayoutStyle();
        jPanel3 = new AniPanel();
        jPanel2 = new javax.swing.JPanel();
        jToggleButton1 = new javax.swing.JToggleButton();
        jLabel1 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem3 = new javax.swing.JMenuItem();

       ...
    }                                          

    private void jToggleButton1MouseReleased(java.awt.event.MouseEvent evt) {                                             
        jTextField3.setEditable(!jTextField3.isEditable());
        jTextField1.setEditable(!jTextField1.isEditable());
        if (jToggleButton1.isSelected()) {
            jToggleButton1.setText("<html>[b]Stopp[/b]</html>");
        }
        if (!jToggleButton1.isSelected()) {
            jToggleButton1.setText("<html>[b]Start[/b]</html>");
        }
        
        jPanel3.testAnim();
       

    }                                            

    ...
    
    // Variables declaration - do not modify                     
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JToggleButton jToggleButton1;
    private org.jdesktop.layout.LayoutStyle layoutStyle1;
    // End of variables declaration                   
    
}
```

Es geht dabei um das jPanel3. Es ist ein Objekt der Klasse AniPanel. Ich möchte nun die Methode testAnim() aufrufen.
Sollte so gehen: [Zeile 75] jPanel.testAnim();
Mein Probelm ist nun, das jPanel3 als javax.swing.JPanel deklariert ist. [Zeile 95] private javax.swing.JPanel jPanel3;

Wie kann ich diese deklaration ändern?`Hab mich schon dumm und dämlich gesucht ... deshalb geh ich nu auch schlafen.

Danke für euren Tipp!


----------



## The_S (7. Mai 2007)

einfach als AniPanel deklarieren oder wenn es zur Laufzeit geschehen soll casten


```
AniPanel ani = (AniPanel)jPanel;
```


----------



## crappysnafu (7. Mai 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> einfach als AniPanel deklarieren



Genau das will ich ja wissen, wie das geht mit Netbeans  

Ich hab das nun mal so gemacht:


```
// Variables declaration - do not modify                     
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JToggleButton jToggleButton1;
    private org.jdesktop.layout.LayoutStyle layoutStyle1;
    // End of variables declaration                   
    
    private AniPanel aniPanel3 = (AniPanel) jPanel3;
```

Meintest du das so? ... find ich ned so toll, abr es geht 

Hätte das jPanel3 gerne auf Zeile 15 als AniPanel deklariert...


----------



## SlaterB (7. Mai 2007)

neue Zeile 15: 
private AniPanel  jPanel3; 

oder wie? 

das andere dürfte evtl nicht funkionieren, dann das jPanel3 wird doch erst in einem Konstruktor oder so erzeugt?
du könntest also 
private AniPanel aniPanel3;
schreiben,
aber 
aniPanel3 = (AniPanel) jPanel3;
darf erst NACH Erzeugung des jPanel3 ausgeführt werden

edit:
z.B. in 
initComponents()
wie ich grad sehe


----------



## crappysnafu (7. Mai 2007)

Aaaah genau. Hab ich grad gemerkt ;P

ich tu 
	
	
	
	





```
aniPanel3 = (AniPanel) jPanel3;
```
 nach initComponents(); dann funzt das

Danke SlaterB

Einen Weg das jPanel3 als AniPanel zu deklarieren kennt keiner? Is ne NetBeans-Spezifische Angelegenheit


----------



## The_S (7. Mai 2007)

Was hat das mit Netbeans zu tun?


```
AniPanel jPanel3 = new AniPanel();
```


----------



## crappysnafu (7. Mai 2007)

es geht um die deklaration der Variable jPanel3 ... guckst du Zeile 44 1. Post ...  da hab ich deine Zeile schon  Das geht mit der Einstellung "Custom Creation Code"

Ich such sowas wie "Custom Variable Declaration" oder so.

Oder lieg ich hier so falsch? Um mein Problem vom 1. Post zu lösen muss ich doch nur jPanel3 als AniPanel deklarieren?


----------



## The_S (7. Mai 2007)

Guckst du Zeile 95 1. Post von dir, hast du nicht  .


----------



## crappysnafu (7. Mai 2007)

das wird von NetBeans automatisch generiert ... genau diese Zeile will ich ja ändern!


----------



## AlArenal (7. Mai 2007)

crappysnafu hat gesagt.:
			
		

> das wird von NetBeans automatisch generiert ... genau diese Zeile will ich ja ändern!



Daran solltest du nichtmal denken!
Nicht ohne Grund ist der Code der #initComponents mit dem Hinweis versehen, dass man ihn NICHT ÄNDERN soll, es würde nämlich eh nichts bringen:


```
/** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
```

Wenn dir dein Mausgeschubse also lieb ist, lass die Finger davon und such dir nen sauberen Weg, z.b. ne Methode #postInit, die du im Konstruktor nach #initComponents aufrufen lässt und wo du deinen Kram drin machst, o.ä.

Abgesehen davon solltest du dir angewöhnen deinen Variablen beschreibende Namen zu geben - das geht auch als Mausschubser


----------



## The_S (7. Mai 2007)

Ansonsten codiere deine GUI selbst, ist ohnehin sauberer!


----------



## AlArenal (7. Mai 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Ansonsten codiere deine GUI selbst, ist ohnehin sauberer!



Kann man so nicht pauschal sagen. Aber jedes Tool will eben auch beherrscht werden und je mehr ein Tool leistet, desto mehr Ahnung muss man auch davon haben was es tut, warum es das tut, woran man drehen kann und was für DOs und DONTs es gibt.


----------



## crappysnafu (7. Mai 2007)

Hehe ... GUI selber proggen is schon ok, wenns aber grösser wird, wirds auch mühsam ... Ich will dich mal sehen, eine Mehrfenstrige Anwendung mit zig Dialogen oder 50 Buttons mit Eingabefeldern und einigen Ausgabefenstern zu proggen ... da wird man hibbelig. 

Also, wenn einer NetBeans kennt soll er mich doch aufklähren... Ich hab die Wikis und FAQ's bis zum hibbelig-werden durchsucht...

@ Al: ich bin kein Mausschubser ... kann sogar Assembler  Ich weiss auch das ich da nix von Hand ändern soll, deshalb will ich ja wissen wie man sowas bei NetBeans einstellt ...
Oder ist das so der gangbare Weg?

Zu den Variablen: ich hab da einfach mal drauflosgeklickt .. ist noch nix konkretes, aber danke für den nett-gemeinten Tipp.


----------



## AlArenal (7. Mai 2007)

Die Aufklärung überlasse ich deinen Eltern, aber wenn du konkrete Fragen hast, frag. Und dass du alle Wikis und FAQs gelesen ist, glaube ich nun nicht wirklich


----------



## The_S (7. Mai 2007)

crappysnafu hat gesagt.:
			
		

> Hehe ... GUI selber proggen is schon ok, wenns aber grösser wird, wirds auch mühsam ... Ich will dich mal sehen, eine Mehrfenstrige Anwendung mit zig Dialogen oder 50 Buttons mit Eingabefeldern und einigen Ausgabefenstern zu proggen ... da wird man hibbelig.



Schonmal was von Arrays/Schleifen/Vererbung/Extra Klassen für häufig benötigte Komponenten gehört?


----------



## crappysnafu (7. Mai 2007)

Meow ... seid ihr schnell, hab meinen Post oben nochmal schnell editiert und schon habt ihr wieder was getippelt...

@ Al von wegen alle Wikis gelesen: Mein Problem ist, das ich ned weiss, nach was ich suchen soll. 

Ich will folgendes:
Ein Panel, inwelchem ich rumzeichen kann und was da drin animieren (Uhr mit Zeigern) Das ganze soll "drehen" wenn ich einen Button drück, und wieder stoppen wenn derselbige gedrückt wird.
Ich dachte mir, ein JPanel zu erweitern mit der Subklasse AniPanel wo ich alle Methoden reinpfusche sollte funktionieren. Eine Methode startAnim und eine stoppAnim, die Animation mit nem Thread ... ich sehs schon vor mir  Mich hat bisher nur eins daran gehindert: Ich konnte keine Methode der Klasse AniPanel aufrufen, weil.... hab ich ja schon erklährt.

Also so wie ich das nun oben gebastelt hab sollts ja gehen. (Mit ner neuen Variablen "AniPanel ani = (AniPanel) jPanel3"

@ Hobbit 





> Schonmal was von Arrays/Schleifen/Vererbung/Extra Klassen für häufig benötigte Komponenten gehört?



sehr Witzig  ... es geht darum, aus dem Code zu sehen, wo welche Elemente angeordnet sind ... aber du scheinst ja eine JavaVM in deinem inneren AUge zu haben ;P


----------



## The_S (7. Mai 2007)

Wenn du wüsstest, was ich alles vor meinem inneren Auge habe :lol:


----------



## crappysnafu (7. Mai 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Wenn du wüsstest, was ich alles vor meinem inneren Auge habe :lol:



 :roll: *angstbekomm*

Kannst du mir sagen wie ich auch sowas auf mein inneres Auge installier? Scheint recht praktisch zu sein ^^


----------



## The_S (7. Mai 2007)

crappysnafu hat gesagt.:
			
		

> :roll: *angstbekomm*



vollkommen zu recht!



			
				crappysnafu hat gesagt.:
			
		

> Kannst du mir sagen wie ich auch sowas auf mein inneres Auge installier? Scheint recht praktisch zu sein ^^



War n recht blutiges Ritual, aber am Besten fragste ma deinen Programmierten Augenarzt des Vertrauens


----------



## crappysnafu (7. Mai 2007)

Hehe ... 

Aber ernsthaft, um dem Thread wieder ein wenig Sinn zu geben: Sollte es hier jemanden geben, der mir sagen kann wie ich in NetBeans die Variablendeklaration anpasse (also in dem Bereich wo man ned selbst rumfingern soll), der soll sich melden. Danke!!


----------



## AlArenal (7. Mai 2007)

Das Ding ist als JPanel deklariert, weil du da wohl ein JPanel reingezogen hast. Wenn du JPanel selbst erweitert hast und die Klasse verwenden willst, musst du sie der Palette hinzufügen und entsprechend benutzen.

Du sowieso kannst kein JPanel zu AniPanel casten, weils nunmal keines ist.


----------

