具有漫画书对象或新对象的表单

时间:2014-05-24 11:56:28

标签: java swing user-interface

很抱歉,如果我是双重定位,但我完全厌倦了Java。 我试图让我的表单能够动态更改,如果你选择一个单选按钮。函数save,delete,new将保持不变,但是正文的内容例如UPC将改为小说和其他领域的ISBN。 当你按Novel来加载Novel中的项目以取代漫画书时,有没有办法? 我试图分开,但是我遇到了障碍,我的技能有限,不知道该怎么做。 我只是希望它能够改变它以便它起作用。

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.MenuBar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Scanner;

public class FormFictionCatelogue extends JFrame implements ActionListener {

// Constants
// =========
private final String FORM_TITLE = "Fiction Adiction Catelogue";
private final int X_LOC = 400;
private final int Y_LOC = 80;
private final int WIDTH = 600;
private final int HEIGHT = 450;

private String gradeCode;
//final static String filename = "data/comicBookData.txt";

private JButton firstPageButton;
private JButton backPageButton;
private JButton forwardPageButton;
private JButton lastPageButton;

private JRadioButton comicBookRadioButton;
private JRadioButton novelRadioButton;


private final String FIRSTPAGE_BUTTON_TEXT = "|<";
private final String BACKPAGE_BUTTON_TEXT = "<";
private final String FORWARDPAGE_BUTTON_TEXT = ">";
private final String LASTPAGE_BUTTON_TEXT = ">|";

private final String COMICBOOK_BUTTON_TEXT = "Comic";
private final String NOVEL_BUTTON_TEXT = "Novel";
private final String SAVE_BUTTON_TEXT = "Save";
private final String EXIT_BUTTON_TEXT = "Exit";
private final String CLEAR_BUTTON_TEXT = "Clear";
private final String FIND_BUTTON_TEXT = "Find";
private final String DELETE_BUTTON_TEXT = "Delete";
private final String ADDPAGE_BUTTON_TEXT = "New";

// Attributes
private JTextField upcTextField;
private JTextField isbnTextField;
private JTextField titleTextField;
private JTextField issueNumTextField;
private JTextField bookNumTextField;
private JTextField writerTextField;
private JTextField authorTextField;
private JTextField artistTextField;
private JTextField publisherTextField;
private JTextField seriesTextField;
private JTextField otherBooksTextField;
private JTextField gradeCodeTextField;
private JTextField charactersTextField;

private JButton saveButton;
private JButton deleteButton;
private JButton findButton;
private JButton clearButton;
private JButton exitButton;
private JButton addPageButton;

FictionCatelogue fc;

/**
 * @param args
 * @throws Exception
 */
public static void main(String[] args) {
    try {

        FormFictionCatelogue form = new FormFictionCatelogue();
        form.fc = new FictionCatelogue();
        form.setVisible(true);
        //comicBook selected by default
        form.populatefields(form.fc.returnComic(0));
        //if novel is selected change fields to novel and populate

    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());
    }
}

/**
* 
*/
public FormFictionCatelogue() {
    // Set form properties
    // ===================
    setTitle(FORM_TITLE);
    setSize(WIDTH, HEIGHT);
    setLocation(X_LOC, Y_LOC);

    // Create and set components
    // -------------------------

    // Create panels to hold components
    JPanel menuBarPanel = new JPanel();
    JPanel fieldsPanel = new JPanel();
    JPanel buttonsPanel = new JPanel();
    JPanel navigationPanel = new JPanel();
    //JPanel radioButtonsPanel = new JPanel();
     ButtonGroup bG = new ButtonGroup();



    // Set the layout of the panels
    GridLayout fieldsPanelLayout = new GridLayout(9, 6);

    // Menu
    JMenuBar menubar = new JMenuBar();
    ImageIcon icon = new ImageIcon("exit.png");

    JMenu file = new JMenu("File");
    file.setMnemonic(KeyEvent.VK_F);

    JMenu about = new JMenu("About");
    file.setMnemonic(KeyEvent.VK_F);

    JMenuItem eMenuItem = new JMenuItem("Exit", icon);
    eMenuItem.setMnemonic(KeyEvent.VK_E);
    eMenuItem.setToolTipText("Exit application");
    eMenuItem.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            System.exit(0);
        }
    });

    JMenuItem eMenuItem1 = new JMenuItem("Reports", icon);
    eMenuItem.setMnemonic(KeyEvent.VK_E);
    eMenuItem.setToolTipText("Reports are located here");
    eMenuItem.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            //calls reports
            //System.exit(0);
        }
    });

    file.add(eMenuItem);
    about.add(eMenuItem1);

    menubar.add(file);
    menubar.add(about);

    setJMenuBar(menubar);

    setTitle("Menu");
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    //if comic is selected 
    ComicBookFields(fieldsPanel);
    //else 
    //NovelFields(fieldsPanel);


    // Buttons 
    comicBookRadioButton = new JRadioButton(COMICBOOK_BUTTON_TEXT);
    novelRadioButton = new JRadioButton(NOVEL_BUTTON_TEXT);

    bG.add(comicBookRadioButton);
    bG.add(novelRadioButton);
    this.setLayout(new FlowLayout());
    this.add(comicBookRadioButton);
    this.add(novelRadioButton);
    comicBookRadioButton.setSelected(true);
    bG.add(comicBookRadioButton);
    bG.add(novelRadioButton);


    addPageButton = new JButton(ADDPAGE_BUTTON_TEXT);
    buttonsPanel.add(addPageButton);

    saveButton = new JButton(SAVE_BUTTON_TEXT);
    buttonsPanel.add(saveButton);

    clearButton = new JButton(CLEAR_BUTTON_TEXT);
    buttonsPanel.add(clearButton);

    deleteButton = new JButton(DELETE_BUTTON_TEXT);
    buttonsPanel.add(deleteButton);

    findButton = new JButton(FIND_BUTTON_TEXT);
    buttonsPanel.add(findButton);

    exitButton = new JButton(EXIT_BUTTON_TEXT);
    buttonsPanel.add(exitButton);

    firstPageButton = new JButton(FIRSTPAGE_BUTTON_TEXT);
    navigationPanel.add(firstPageButton);
    backPageButton = new JButton(BACKPAGE_BUTTON_TEXT);
    navigationPanel.add(backPageButton);
    forwardPageButton = new JButton(FORWARDPAGE_BUTTON_TEXT);
    navigationPanel.add(forwardPageButton);
    lastPageButton = new JButton(LASTPAGE_BUTTON_TEXT);
    navigationPanel.add(lastPageButton);

    // Get the container holding the components of this class
    Container con = getContentPane();

    // Set layout of this class
    con.setLayout(new BorderLayout());
    con.setLayout( new FlowLayout());

    // Add the fieldsPanel and buttonsPanel to this class.
    // con.add(menuBarPanel, BorderLayout);
    con.add(fieldsPanel, BorderLayout.CENTER);
    con.add(buttonsPanel, BorderLayout.LINE_END);
    con.add(navigationPanel, BorderLayout.SOUTH);
    //con.add(radioButtonsPanel, BorderLayout.PAGE_START);


    // Register listeners
    // ==================

    // Register action listeners on buttons
    saveButton.addActionListener(this);
    clearButton.addActionListener(this);
    deleteButton.addActionListener(this);
    findButton.addActionListener(this);
    exitButton.addActionListener(this);
    firstPageButton.addActionListener(this);
    backPageButton.addActionListener(this);
    forwardPageButton.addActionListener(this);
    lastPageButton.addActionListener(this);
    addPageButton.addActionListener(this);
    comicBookRadioButton.addActionListener(this);
    novelRadioButton.addActionListener(this);

    // Exit program when window is closed
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}

public void Radiobutton (){
     this.add(comicBookRadioButton);
     this.add(novelRadioButton);
     comicBookRadioButton.setSelected(true);
     this.setVisible(true);

}

// Populate the fields at the start of the application
public void populatefields(ComicBook cb) {
    String gradecode;

    // radio button selection = comic do this 
    if (cb != null) {

        upcTextField.setText(cb.getUpc());
        titleTextField.setText(cb.getTitle());
        issueNumTextField.setText(Integer.toString(cb.getIssuenumber()));
        writerTextField.setText(cb.getWriter());
        artistTextField.setText(cb.getArtist());
        publisherTextField.setText(cb.getPublisher());
        gradecode = cb.getGradeCode();
        gradeCodeTextField.setText(cb.determineCondition(gradecode));
        charactersTextField.setText(cb.getCharacters());
    }
    //radio button selection = novel do this 


    // Exit program when window is closed
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}

/**
* 
*/
public void actionPerformed(ActionEvent ae) {
    try {

        if(ae.getActionCommand().equals(COMICBOOK_BUTTON_TEXT)){
            //FormFictionCatelogue form = new FormFictionCatelogue();
            //form.populatefields(form.fc.returnObject(0));
            //ComicBookFields(fieldsPanel);
            populatefields(fc.returnComic(0));
        } else if (ae.getActionCommand().equals(NOVEL_BUTTON_TEXT)) {

        } else if (ae.getActionCommand().equals(SAVE_BUTTON_TEXT)) {
            save();
        } else if (ae.getActionCommand().equals(CLEAR_BUTTON_TEXT)) {
            clear();
        } else if (ae.getActionCommand().equals(ADDPAGE_BUTTON_TEXT)) {
            add();
        } else if (ae.getActionCommand().equals(DELETE_BUTTON_TEXT)) {
            delete();
        } else if (ae.getActionCommand().equals(FIND_BUTTON_TEXT)) {
            find();
        } else if (ae.getActionCommand().equals(EXIT_BUTTON_TEXT)) {
            exit();
        } else if (ae.getActionCommand().equals(FIRSTPAGE_BUTTON_TEXT)) {
            // first record
            populatefields(fc.firstRecord());
        } else if (ae.getActionCommand().equals(FORWARDPAGE_BUTTON_TEXT)) {
            // next record
            populatefields(fc.nextRecord());
        } else if (ae.getActionCommand().equals(BACKPAGE_BUTTON_TEXT)) {
            // previous record
            populatefields(fc.previousRecord());
        } else if (ae.getActionCommand().equals(LASTPAGE_BUTTON_TEXT)) {
            // last record
            populatefields(fc.lastRecord());
        } else {
            throw new Exception("Unknown event!");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e.getMessage(), "Error!",
                JOptionPane.ERROR_MESSAGE);
        e.printStackTrace();
    }

}

void clear() {
    upcTextField.setText("");
    titleTextField.setText("");
    issueNumTextField.setText("");
    writerTextField.setText("");
    artistTextField.setText("");
    gradeCodeTextField.setText("");
    publisherTextField.setText("");
    charactersTextField.setText("");
}

private void exit() {
    System.exit(0);
}

void add() {
    try{
    clear();
    ComicBook cb = new ComicBook();
    fc.add(cb);
    fc.lastRecord();
} catch (Exception e){
    e.printStackTrace();
}

}

void save() throws Exception {

    // if radio button = comic do this 
    ComicBook cb = new ComicBook();
    String condition;
    if (upcTextField.getText().length() == 16) {
        //searches if there is another record if()
        cb.setUpc(upcTextField.getText());
    } else {
        throw new Exception("Upc is not at required length ");
    }
    cb.setTitle(titleTextField.getText());
    cb.setIssuenumber(Integer.parseInt(issueNumTextField.getText()));
    cb.setWriter(writerTextField.getText());
    cb.setArtist(artistTextField.getText());
    cb.setPublisher(publisherTextField.getText());
    condition = cb.determineString(gradeCodeTextField.getText());
    if (condition.equals("Wrong Input")) {
        throw new Exception("Grade code is not valid");
    } else {
        cb.setGradeCode(condition);
    }
    cb.setCharacters(charactersTextField.getText());
    fc.save(cb);

    // if radio button = novels do this 
}

private void delete() throws Exception {
    fc.delete();
    populatefields(fc.getCurrentRecord());
}

private void find() {
    // from
    // http://www.roseindia.net/java/example/java/swing/ShowInputDialog.shtml

    String str = JOptionPane.showInputDialog(null, "Enter some text : ",
            "Comic Book Search", 1);
    if (str != null) {
        ComicBook cb = new ComicBook();
        cb = fc.search(str);
        if (cb != null) {
            populatefields(cb);
        } else {
            JOptionPane.showMessageDialog(null, "No comic books found ",
                    "Comic Book Search", 1);
        }

    }
}

public JPanel ComicBookFields(JPanel fieldsPanel) {
    // Create components and add to panels for ComicBook
    GridLayout fieldsPanelLayout = new GridLayout(9, 6);
    fieldsPanel.setLayout(fieldsPanelLayout);

    fieldsPanel.add(new JLabel("UPC: "));
    upcTextField = new JTextField(20);
    fieldsPanel.add(upcTextField);

    fieldsPanel.add(new JLabel("Title: "));
    titleTextField = new JTextField(20);
    fieldsPanel.add(titleTextField);

    fieldsPanel.add(new JLabel("Issue Number: "));
    issueNumTextField = new JTextField(20);
    fieldsPanel.add(issueNumTextField);

    fieldsPanel.add(new JLabel("Writer: "));
    writerTextField = new JTextField(20);
    fieldsPanel.add(writerTextField);

    fieldsPanel.add(new JLabel("Artist: "));
    artistTextField = new JTextField(20);
    fieldsPanel.add(artistTextField);

    fieldsPanel.add(new JLabel("Publisher: "));
    publisherTextField = new JTextField(20);
    fieldsPanel.add(publisherTextField);

    fieldsPanel.add(new JLabel("Grade Code: "));
    gradeCodeTextField = new JTextField(20);
    fieldsPanel.add(gradeCodeTextField);

    fieldsPanel.add(new JLabel("Characters"));
    charactersTextField = new JTextField(20);
    fieldsPanel.add(charactersTextField);

    return fieldsPanel;
}

public JPanel NovelFields(JPanel fieldsPanel) {
    // Create components and add to panels for ComicBook
    GridLayout fieldsPanelLayout = new GridLayout(9, 6);
    fieldsPanel.setLayout(fieldsPanelLayout);

    fieldsPanel.add(new JLabel("ISBN: "));
    isbnTextField = new JTextField(20);
    fieldsPanel.add(isbnTextField);

    fieldsPanel.add(new JLabel("Title: "));
    titleTextField = new JTextField(20);
    fieldsPanel.add(titleTextField);

    fieldsPanel.add(new JLabel("Book Number: "));
    bookNumTextField = new JTextField(20);
    fieldsPanel.add(bookNumTextField);

    fieldsPanel.add(new JLabel("Author: "));
    authorTextField = new JTextField(20);
    fieldsPanel.add(authorTextField);

    fieldsPanel.add(new JLabel("Publisher: "));
    publisherTextField = new JTextField(20);
    fieldsPanel.add(publisherTextField);

    fieldsPanel.add(new JLabel("Series: "));
    seriesTextField = new JTextField(20);
    fieldsPanel.add(seriesTextField);

    fieldsPanel.add(new JLabel("Other Books"));
    otherBooksTextField = new JTextField(20);
    fieldsPanel.add(otherBooksTextField);

    return fieldsPanel;
}


}

2 个答案:

答案 0 :(得分:0)

要交换表单,您可以使用CardLayout

阅读How to Use CardLayout上Swing教程中的部分,了解更多信息和工作示例。

从组合框中进行选择时,教程中的示例会切换。在您的情况下,您将在单击单选按钮时更改面板。因此,您可能还想阅读How to Use Buttons上教程中的部分。

答案 1 :(得分:0)

否则,您可以在JPanel选项上切换JRadioButton,如下所示:

如果您选择小说JPanel displayPanel被清除,则您有一个名为ComicPanel的{​​{1}}默认包含RadioButton并添加displayPanel

NovelPanel

因此,您可以选择自己想做的事情。可能几乎是一切;)

帕特里克