Java提交按钮操作

时间:2013-07-15 21:44:25

标签: java swing user-interface awt submit

我在Java中使用GUI进行培训。所以我开始创建类似游戏的宠物游戏原型或smth。 我创建了菜单以选择要执行的操作,RegisterInfoExit应用程序。 创建字段和dorpdownBox以选择注册的所有内容。 还创建了sumbit按钮(它的开头,所以我在petName上添加了最大字符验证)。 现在,我不知道如何从dropdownBox和文本框中获取所有信息,这些信息已被选中并发送给其他class Pet。我用google搜索但没有发现任何明确的内容。

也许有人可以给我一些提示或为我的代码写一部分。 我想将选定的PetNamePetTypePetGender带到其他class pet

P.S。我从谷歌复制了很多行,所以我只理解80-90%的代码。

Main.java

import javax.swing.*;

import java.awt.Choice;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.*;


public class Main extends JFrame implements ActionListener {
    public static void main (String []args){
        new Main("Meniu"); // Create title

    }
// Main class constructor
    public Main(String title) {
        super(title); 
        setMenu(); //create menu
        setSize(300, 400);// size
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // close running program if window are closed
        setLocationRelativeTo(null); // set window position at center
        setResizable(false); //resizable or not
        show();
    }// Main class constructor

// menu choices
    JMenuItem Registration, Apie, Exit;

// menu method for creation and style   
    private void setMenu() {
        JMenuBar barObj = new JMenuBar(); // create menuBar obj
        JMenu messagesObj = new JMenu("Meniu"); //create menu bar menu object

        barObj.setBackground(Color.YELLOW); // set menu bar bg color

        Registration = new JMenuItem("Registration"); 
        Registration.setToolTipText("Push to register"); // write text when u hang mouse over
        Registration.addActionListener(this);   
        Registration.setBackground(Color.WHITE); // set menu bar menu options bg color
        messagesObj.add(Registration); // add Registration into messages

        Apie = new JMenuItem("Apie");
        Apie.setToolTipText("Push for information");
        Apie.addActionListener(this);
        Apie.setBackground(Color.WHITE);
        messagesObj.add(Apie);  

        Exit = new JMenuItem("Exit");
        Exit.setToolTipText("Here you will exit");
        Exit.addActionListener(this);
        Exit.setBackground(Color.WHITE);
        messagesObj.add(Exit);



        barObj.add(messagesObj);
        setJMenuBar(barObj);
    } //create menu end


// implemented method
    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == Registration){
            int registReply = JOptionPane.showConfirmDialog(this, "Norite registruotis?", 
                "Išeiti", JOptionPane.YES_NO_OPTION);
            if(registReply == JOptionPane.YES_OPTION){ //registReply is what u have choosen
                petRegistration ();
            }
        }else if (e.getSource() == Apie)
            JOptionPane.showMessageDialog(this, "Jus esate informacijos lange.", "Apie", JOptionPane.PLAIN_MESSAGE);                    
        else if (e.getSource() == Exit){
            int exitReply = JOptionPane.showConfirmDialog(this, "Ar norite Exit?", 
                    "Išeiti", JOptionPane.YES_NO_OPTION);// exitReply is what u have choosen
                if(exitReply == JOptionPane.YES_OPTION){// if its has been chose/ program will shutdown
                    System.exit(0);
                }           
        } // if end
    }// actionPerformed

    public void petRegistration(){

        Container container = getContentPane();
// petName textbox and label        
        JTextField jtfRegLabel = new JTextField("***Registration***", 25);
        jtfRegLabel.setHorizontalAlignment(JTextField.CENTER);
        jtfRegLabel.setEditable(false);


        JTextField jtfText1 = new JTextField(7);
        JTextField jtfNameLabel = new JTextField("Pet Name (min 3, max 16 letters)", 17);
        jtfNameLabel.setEditable(false);
        jtfText1.setDocument(new JTextFieldLimit(16)); // add limit to text box

// pettype combobox and label
        Frame frame = new Frame("Choice");
        Label label = new Label("What is your Choice:");
        Choice choice = new Choice();

        frame.add(choice);
        choice.add("Cat        ");
        choice.add("Dog        ");
        choice.add("Fish       ");
        choice.add("Mouse      ");
        choice.add("Bird       ");
        choice.add("Horse      ");

        JTextField jtfTypeLabel = new JTextField("Pet Type, Choose one ", 17);
        jtfTypeLabel.setEditable(false);

// petGender combobox and label

        Choice choice1 = new Choice();
        frame.add(choice1);
        choice1.add("Male       ");
        choice1.add("Female     ");

        JTextField jtfGenderLabel = new JTextField("Pet Gender, Choose one ", 17);
        jtfGenderLabel.setEditable(false);

// submit registration  
        JButton submitRegObj = new JButton("Submit");



        container.add(jtfRegLabel);
        container.add(jtfText1);
        container.add(jtfNameLabel);
        container.add(choice);
        container.add(jtfTypeLabel);
        container.add(choice1);
        container.add(jtfGenderLabel);
        container.add(submitRegObj);    

        container.setLayout(new FlowLayout());
        setSize(300, 400); // set size of window
        setVisible(true);// set it visible


    }

}// Main clases end

Pet.java

public class Pet {
    private String petName;
    private String petType;
    private String petGender;

    public Pet(String petName, String petType, String petGender) {
        super();
        this.petName = petName;
        this.petType = petType;
        this.petGender = petGender;
    }


}

我认为JTextFieldLimit类是必要的。它只是进行最大字符验证。

感谢。

1 个答案:

答案 0 :(得分:1)

首先,您正在混合框架。 Swing和AWT组件不能很好地协同工作。我强烈建议不要使用AWT组件并坚持使用Swing框架。

其次,请勿将JTextField用于标签,这是JLabel的用途

首先获取用于注册的字段,并将它们作为类实例字段添加到自己的JPanel ...

public class RegistrationPanel extends JPanel {

    JTextField jtfName;
    JComboBox cbType;
    JComboBox cbSex;

    // Constructor and other code //
}

然后,在RegistrationPanel中,提供适当的制定者和吸气剂......

public String getPetName() {
    return jtfName.getText();
}

public void setPetName(String name) {
    jtfName.setText(name);
}

// Other setters and getters //

这样,当您需要它时,您可以从面板中检索值。

当用户选择注册菜单时,您将创建此面板的新实例并将其添加到您的框架中。您甚至可以使用CardLayout来帮助切换视图

为了让生活更轻松,请将enum类型用于限制值,例如类型和性别。

我强烈建议您花时间阅读