2010-04-09 7 views
0

Cela ressemble plus à un test de package/d'importation. Nous allons commencer avec mon dossier de base à .../javaf/test.javaPackage Java - Pour créer un bouton et en importer un au besoin

Mon but est de créer une sous-catégorie et de créer une classe avec un bouton que je peux importer dans test.java quand j'ai besoin d'un bouton. Je me sens comme si je l'avais bien fait, je sais que le bouton ne fait rien à partir de maintenant, mais je veux juste faire fonctionner le tout et développer le code par la suite. Voici donc ce qu'il - C'est test.java

import paket.*; // importing classes from subcategory paket! 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 


public class test { 

    public test() { 
     JFrame myFrame; 
     JPanel myPanel; 
     myFrame = new JFrame("Hello FramWorld"); 
     myPanel = new JPanel(); 

     // Here I want to add the object created in paket/myButts.java 
     // The problem is how to make these two lines work. 
     myButts myButton = new myButts(); 
     myPanel.add(myButton); 


     myFrame.setVisible(true); 
     myFrame.getContentPane().add(myPanel, BorderLayout.CENTER); 
     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myFrame.pack(); 
    } 

    public static void main(String args[]) { 
     new test(); 
    } 
} 

Et voici mon .../javaf/Paket/myButts.java

package paket; // Here is the package function (ought to work like a link) 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

// This class should only create a button. 

public class myButts { 
    public myButts() { 
     JButton myButt = new JButton(); 
    } 
} 

J'ai compilé myButts. Java sans erreurs. Mais je compile test.java et il me donne l'erreur suivante:

test.java:19: ne peut pas trouver le symbole symbole: méthode add (paket.myButts) Lieu: classe javax.swing.JPanel MyPanel. add (myButton);

Merci pour la lecture, Z

Répondre

1

Je pense que vous voulez:

public class myButts extends JButton { 

} 

Si vous voulez ajouter des instances de votre classe directement Swing contrôle, il doit étendre un type Swing ou AWT (en ce cas JButton). Auparavant, vous venez de créer un JButton local dans le constructeur, inutilisé et inaccessible partout ailleurs. Comme une note, il est préférable d'essayer de suivre le Java style guide, en particulier naming conventions. Les classes sont recommandées pour être mixtes, par ex. MyButton.

+0

Merci mon pote! Tellement facile et j'étais tellement frustré pendant toute une journée! Donc, chaque fois que je veux utiliser les commandes de swing pour le paquet/importation, je dois le dire pour étendre? – Zopyrus

+0

Oui, si vous voulez que votre classe * soit * un contrôle de swing qui soit le moyen de le faire. –

+0

Compris! Je vais certainement passer par ce guide, merci! – Zopyrus

0

L'erreur est:

test.java:19: cannot find symbol symbol : method add(paket.myButts) location: class javax.swing.JPanel myPanel.add(myButton); 

Cela signifie que la classe JPanel ne dispose pas d'une méthode add qui prend un paramètre paket.myButts. Regardons le JPanel documentation, pour voir quelles méthodes add il a. Il existe 5 méthodes add héritées de Container et une de Component. This method, comme la plupart d'entre eux, nécessite de passer un objet Component. Celui-ci vous oblige à passer un objet PopupMenu. Il semble donc que votre objet paket.myButts n'est pas un composant ou un menu contextuel, et doit l'être. Il pourrait être tentant de faire en sorte que myButts étende le composant. Alors jetez un oeil à la Component documentation, pour voir ce que vous obtiendrez. Notez qu'il existe plusieurs sous-classes qui ont déjà été fournies:

Bouton, toile, checkbox, Choix, Container, Étiquette, Liste, barre de défilement, TextComponent

Maintenant, puisque vous voulez vraiment un bouton, vous pouvez le deviner, il serait faire sens pour myButts d'étendre Button. Cela fonctionnerait, et vous obtiendriez un awt.Button. Cependant, si vous explorez plus loin, certaines des sous-classes de Container sont les classes swing, y compris JButton. Je recommanderais d'utiliser ces classes de swing.

Une fois que vous faites cela, votre constructeur devrait prendre cette forme:

public class myButts extends JButton { 
    public myButts() { 
    super(); 
    // here put any myButts-specific construction code, such as: 
    setText("Press me!"); 
    } 
} 

Pour une introduction plus générale à l'utilisation de composants Swing, je recommande fortement l'excellent swing tutorial.

Questions connexes