2009-10-13 18 views
1

Je ne connais que des choses de base en Java. Et j'ai besoin de créer une interface graphique pour ce type de programme. Il montre vos informations de carte de crédit. Il a quelques autres classes et fait usage de la rmiregistry. Cela fonctionne bien dans la console, mais j'ai besoin de le montrer dans une interface graphique. La première chose qui saute ici est d'entrer votre nom (java Shopper localhost mon nom). Ensuite, il vous montre les informations de votre carte de crédit. Quelqu'un peut-il m'aider? S'il vous plaît et merciComment ajouter une interface graphique à ce programme java?

import java.rmi.*; 
import javax.swing.*; 

public class Shopper { 
    public static void main(String args[]) 
    { 
     CreditManager cm = null; 
     CreditCard account = null; 

     if(args.length<2) 
     { 
      System.err.println("Usage:"); 
      System.err.println("java Shopper <server> <accountname>"); 
      System.exit(1); 
     } 
     try 
     { 
      String url = new String("//"+args[0]+"/cardManager"); 
      System.out.println("Shopper: lookup cardManager, url="+url); 
      cm = (CreditManager) Naming.lookup(url); 
     }catch(Exception e) 
     { 
      System.out.println("Error in getting Card Manager "+e); 
      System.exit(1); 
     } 

     try 
     { 
      account = cm.findCreditAccount(args[1]); 
      System.out.println("Found account for "+args[1]); 
     }catch(Exception e) 
     { 
      System.out.println("Error in getting acocunt for "+args[1]); 
      System.exit(1); 
     } 

     try 
     { 

      System.out.println("Available credit is "+account.getCreditLine()); 
      System.out.println("Changing pin number for account"); 
      account.setSignature(1234); 
      System.out.println("Buying a new watch for $100"); 
      account.makePurchase(100.0f, 1234); 
      System.out.println("Available credit is now "+account.getCreditLine()); 
      System.out.println("Buying a new pair of shoes for $160"); 
      account.makePurchase(160.0f, 1234); 
      System.out.println("Cardholder: Paying off $136 of balance"); 
      account.payTowardsBalance(136.0f); 
      System.out.println("Available credit is now "+account.getCreditLine()); 

     }catch(Exception e) 
     { 
      System.out.println("Transaction error for "+args[1]); 
     } 

     System.exit(0); 
    } 

} 
+0

Looks comme le formatage de votre code manque les premières lignes. – perimosocordiae

+0

que voulez-vous dire? C'est le code complet. Eh bien, sauf pour certaines classes –

Répondre

5

Pour commencer, un coup d'œil à Awt/Swing in the Javadoc

Selon ce que vous devez faire, vous pouvez ajouter une interface utilisateur graphique très rapidement dans un premier temps à l'aide d'un JFrame et certains TextArea (la zone de texte sera votre "sortie console"), c'est le moyen le plus rapide d'avoir quelque chose de visuel sur votre console. Après peut-être vous utiliserez une entrée pour le nom du compte dans une fenêtre contextuelle (voir PopupFactory).

Pour la première fois, jetez un coup d'œil sur les différents exemples de gui sur sun afin de comprendre comment cela fonctionne avant d'en concevoir un plus complet pour votre application.

+0

Merci. Je comprends ce que tu veux dire. Et c'est ce que je pense aussi. Mais je pourrais avoir besoin d'explorer l'IDE que j'utilise si je pouvais le faire. Et cela prendrait du temps. Y a-t-il un code pour ça? Donc, je pourrais le modifier ou quelque chose et apprendre? –

+1

Comme indiqué dans une autre réponse, je n'utiliserais pas NetBeans GUI Builder, cela ne vous aidera pas à comprendre comment Gui est fabriqué et comment Java gère les composants Gui. Essayez très simplement comment faire avec Gui, et le jour que vous possédez dans cette zone, utilisez NetBean GUI Builder si vous n'avez vraiment pas le temps pour votre application (ou si vous n'avez pas honte de voir le code généré automatiquement) –

2

L'éditeur de GUI dans NetBeans n'est en fait pas mauvais pour commencer à créer rapidement une interface graphique pour une petite application. Ne connaissant que peu de choses sur la création de GUI (et seulement AWT, pas Swing), j'ai fait ma première application Swing en une dizaine de minutes.

Depuis que vous êtes nouveau sur Java, je suppose que vous n'avez pas encore choisi un IDE. NetBeans est un bon endroit pour commencer.

+0

J'utilise netbeans et je l'apprends maintenant. Mais cela pourrait prendre du temps. :) –

2

Commencez par lire le Swing Tutorial. Il y a beaucoup d'exemples de programmes à apprendre. Ensuite, vous pouvez poser des questions spécifiques si vous rencontrez des problèmes.

2

Je ne vous recommande pas d'utiliser NetBeans GUI Builder, il génère beaucoup de code inutile. Voici un exemple que j'ai écrit pour vous aider à démarrer avec Swing. C'est un exemple simple d'une création JFrame avec deux JButtons et un JTextField. Vous pouvez être également intéressé par le modèle MVC, vous pouvez en savoir plus sur ce sujet spécifique ici (http://pclc.pace.edu/~bergin/mvc/mvcgui.html) Aussi, si vous voulez montrer des résultats peut-être vous devriez essayer avec le contrôle JTextPane, mais c'est juste mon avis

public class MainWindowClient implements ActionListener { 

    JFrame frame; 
    JTextField jtxInput; 

    JButton btnConnect; 
    JButton btnDisconnect; 

    public MainWindowClient() { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       init(); 
      } 
     }); 
    } 

    public void init() { 
     try { 
      UIManager 
        .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
     } 
     catch (ClassNotFoundException e) {} 
     catch (InstantiationException e) {} 
     catch (IllegalAccessException e) {} 
     catch (UnsupportedLookAndFeelException e) {} 

     frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLayout(new BorderLayout()); 
     frame.setTitle("Client"); 
     frame.setSize(800, 600); 

     final JPanel title = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     title.setBackground(new Color(255, 255, 255)); 
     final JLabel lblAppName = new JLabel("Client Application"); 
     lblAppName.setFont(new Font("sansserif", Font.PLAIN, 22)); 
     title.add(lblAppName); 
     title.setBorder(BorderFactory.createTitledBorder("")); 

     final JPanel panelInputBoard = new JPanel(new GridLayout()); 
     panelLogArea.setBorder(BorderFactory.createTitledBorder("Input")); 
     jtxInput = new JTextField(""); 

     panelLogArea.add(jtxInput); 

     final JPanel panelCommandBoard = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     panelCommandBoard.setBorder(BorderFactory.createTitledBorder("Client Commands")); 

     btnConnect = new JButton("Connect"); 
     btnConnect.addActionListener(this); 

     btnDisconnect = new JButton("Disconnect"); 
     btnDisconnect.addActionListener(this); 

     panelCommandBoard.add(btnConnect); 
     panelCommandBoard.add(btnDisconnect); 

     frame.add(title, BorderLayout.NORTH); 
     frame.add(panelCommandBoard, BorderLayout.SOUTH); 
     frame.add(panelInputBoard, BorderLayout.NORTH); 

     frame.setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     JButton eventSource = (JButton) event.getSource(); 
     if(eventSource.getText().equals("Connect")) { 
      // Do some stuff 
     } 
     if(eventSource.getText().equals("Disconnect")) { 
      // Do some stuff 
     }  
    } 


    public static void main(String[] args) { 
     MainWindowClient m = new MainWindowClient(); 
    } 
}