繁体   English   中英

您如何将GUI添加到此Java程序?

[英]How do you add GUI to this java program?

我只知道Java中的基本知识。 我需要为此类程序创建一个GUI。 它显示您的信用卡信息。 它还有其他一些类,并且使用了rmiregistry。 这在控制台中工作正常,但我需要在GUI中显示它。 在这里提示的第一件事是输入您的名字(java Shopper localhost 我的名字 )。 然后,它会向您显示您的信用卡信息。 谁能帮我? 谢谢,麻烦您了

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);
    }

}

首先,快速浏览一下Javadoc中的 Awt / Swing

根据您的需要,您可以在第一时间使用JFrame和一些TextArea(文本区域将是您的“控制台输出”)非常快速地添加GUI,这是使您的内容可视化的最快方法安慰。

也许之后,您将在弹出窗口中使用一些输入作为帐户名(请参阅PopupFactory)。

您可以第一次在sun网站上快速浏览各种gui示例,以了解其工作原理,然后为您的应用程序设计更完整的示例。

实际上, NetBeans中的GUI编辑器对于快速入门为小型应用程序创建GUI来说并不坏。 我对创建GUI知之甚少(然后仅了解AWT,而不了解Swing),我在大约十分钟的时间内完成了我的第一个Swing应用程序。

由于您是Java的新手,所以我猜您尚未选择IDE。 NetBeans是一个不错的起点。

首先阅读Swing教程 有很多示例程序可供学习。 然后,如果遇到问题,您可以提出具体问题。

我不建议您使用NetBeans GUI Builder,因为它会生成很多不必要的代码。 这是我写来帮助您从Swing开始的一些示例。 这是创建带有两个JButton和一个JTextField的JFrame的简单示例。 您可能也对MVC模式感兴趣,您可以在此处阅读有关该特定主题的更多信息( http://pclc.pace.edu/~bergin/mvc/mvcgui.html )。此外,如果您想显示结果,也许应该尝试JTextPane控件,但这只是我的意见

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(); 
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM