Προς το περιεχόμενο

Δεν τρέχει το Java App σε NetBeans


Wise_One

Προτεινόμενες αναρτήσεις

Δημοσ.

Έρχομαι με μια απορία που έχει αρκετό κώδικα αν θελήσετε να τρέξετε, αλλά ενδεχομένως απλή αν η απάντηση είναι μια-δυο γραμμές.

 

Ακολούθησα το Tutorial της Sun για δημιουργία GUI με το NetBeans. Eίπα μετά να κάνω και το δικό μου προγραμματάκι.

 

Ο κώδικας αυτός:

>
/*
* SimpleCalculatorGUI.java
*
* Created on 9 Νοέμβριος 2008, 7:31 μμ
*/

package learn;

/**
*
* @author  Βασίλειος
*/
public class AgePresentationGUI extends javax.swing.JPanel {

   /** Creates new form SimpleCalculatorGUI */
   public AgePresentationGUI() {
       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.
    */
   @SuppressWarnings("unchecked")
   // <editor-fold defaultstate="collapsed" desc="Generated Code">
   private void initComponents() {

       ageLabel = new javax.swing.JLabel();
       ageText = new javax.swing.JTextField();
       sayComment = new javax.swing.JButton();
       comment = new javax.swing.JTextField();

       ageLabel.setText("How old are you?");

       sayComment.setText("Say");
       sayComment.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               sayCommentActionPerformed(evt);
           }
       });

       javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
       this.setLayout(layout);
       layout.setHorizontalGroup(
           layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(layout.createSequentialGroup()
               .addGap(143, 143, 143)
               .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                   .addComponent(sayComment, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   .addComponent(ageText)
                   .addComponent(ageLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   .addComponent(comment))
               .addContainerGap(174, Short.MAX_VALUE))
       );

       layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {ageLabel, ageText, sayComment});

       layout.setVerticalGroup(
           layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(layout.createSequentialGroup()
               .addContainerGap()
               .addComponent(ageLabel)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
               .addComponent(ageText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addGap(18, 18, 18)
               .addComponent(sayComment)
               .addGap(18, 18, 18)
               .addComponent(comment, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addContainerGap(165, Short.MAX_VALUE))
       );
   }// </editor-fold>

private void sayCommentActionPerformed(java.awt.event.ActionEvent evt) {
   String finalComment = "";
   if(Double.parseDouble(ageText.getText()) < 0){
       finalComment = "Wrong age!";
   }
   else if(Double.parseDouble(ageText.getText()) < 12){
       finalComment = "Child";
   }
   else if(Double.parseDouble(ageText.getText()) <= 18){
       finalComment = "Teenager";
   }
   else{
       finalComment = "Adult";
   }
   comment.setText(finalComment);
}

public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
           public void run() {
               new AgePresentationGUI().setVisible(true);
           }
       });
   }

   // Variables declaration - do not modify
   private javax.swing.JLabel ageLabel;
   private javax.swing.JTextField ageText;
   private javax.swing.JTextField comment;
   private javax.swing.JButton sayComment;
   // End of variables declaration

}

Κάνει compile & run χωρίς πρόβλημα, μόνο που δε "σηκώνει" το GUI που έφτιαξα. Μήπως φταίει τ' ότι αντέγραψα τον κώδικα της main() απ' το demo της Sun;

Δημοσ.

Α τώρα το παρατήρησα.

Γιατί η τάξη σου κάνει extend JPanel?

Κανονικά θα έπρεπε να κάνει extend JFrame ή αλλιώς να βάλεις το JPanel μέσα σε ένα JFrame.

 

Δηλαδή στην main θα μπορούσες να κάνεις:

 

>JFrame fr = new JFrame();

fr.setSize(.....);
....... και ότι αρχικοποίηση θέλεις.

fr.setContentPane(new AgePresentationGUI());
fr.setVisible(true);

Δημοσ.

Συγχώρησε με φίλε μου αλλά δυστυχώς δε μπορώ να σου απαντήσω. Ήταν η πρώτη προσπάθεια να κάνω GUI πρόγραμμα με NetBeans και τον κώδικα τον έφτιαξε αυτόματα.

 

Η αλήθεια είναι ότι έκατσα να κάνω GUI χωρίς να έχω μελετήσει το θεωρητικό μέρος, οπότε μάλλον φταίει η απειρία μου.

 

Anyway σ' ευχαριστώ για την απάντηση, δε μπορώ να κάνω αλλαγές στο πρόγραμμα (προς το παρόν), θα πιαστώ αρχικά με αυτό το θέμα στο Thinking In Java κι όταν αποκτήσω εμπειρία εκτός GUI Builder, τότε θα πάω στο GUI Builder :)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...