简体   繁体   English

如何通过按此GUI的按钮来打开另一个GUI Jpanel类?

[英]How would I open another gui jpanel class by pressing a button from this gui?

Basically I have been trying to implement the "NotePad" button to open another gui class I have called notepad. 基本上,我一直在尝试实现“ NotePad”按钮来打开另一个我称为记事本的gui类。 I have tried to use the actionlistener feature but am having no luck with it, any idea how I could do something like that? 我曾尝试使用动作侦听器功能,但运气不好,不知道我该怎么做?

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

import java.awt.Label;
import java.awt.Font;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLayeredPane;

public class Maingui extends JFrame{

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
     public void run() {
    try {
        Maingui frame = new Maingui();
            frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

public Maingui() {
    setForeground(Color.RED);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setForeground(Color.RED);
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JButton btnNotepad = new JButton("Notepad");
    btnNotepad.setBounds(10, 62, 414, 23);
    contentPane.add(btnNotepad);

    JButton btnWeather = new JButton("Weather");
    btnWeather.setBounds(10, 99, 414, 23);
    contentPane.add(btnWeather);

    JButton btnAddressBook = new JButton("Address Book");
    btnAddressBook.setBounds(10, 133, 414, 23);
    contentPane.add(btnAddressBook);

    JButton btnAgenda = new JButton("Agenda");
    btnAgenda.setBounds(10, 167, 414, 23);
    contentPane.add(btnAgenda);

    Label label = new Label("Montclair Panel");
    label.setFont(new Font("Aparajita", Font.PLAIN, 16));
    label.setBounds(160, 10, 121, 22);
    contentPane.add(label);

    JLayeredPane layeredPane = new JLayeredPane();
    layeredPane.setBounds(98, 62, 1, 1);
    contentPane.add(layeredPane);
}

} }

This is my Notepad class
import javax.swing.*;

import org.jasypt.util.text.BasicTextEncryptor;

import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import java.io.*;


public class Notepad extends JFrame implements ActionListener {
private static JTextArea textArea = new JTextArea();
private static String myEncryptionPassword;
private static String myText;
private MenuBar menuBar = new MenuBar();
private Menu file = new Menu();
private Menu edit = new Menu();
private Menu shortcut = new Menu();

//UNDO/REDO//
private MenuItem redoFile = new MenuItem();
private MenuItem undoFile = new MenuItem();


private MenuItem openFile = new MenuItem();
private MenuItem saveFile = new MenuItem();
private MenuItem close = new MenuItem();
private MenuItem cut = new MenuItem();
private MenuItem copy = new MenuItem();
private MenuItem paste = new MenuItem();
private MenuItem setBackground = new MenuItem();


public static final int WIDTH = 700;
public static final int HEIGHT = 500;
public static final String TITLE = "Montclair Notepad";


public Notepad() {
    this.setSize(WIDTH, HEIGHT);
    this.setTitle(TITLE);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.textArea.setFont(new Font("Century Gothic", Font.BOLD, 12)); 

    this.getContentPane().setLayout(new BorderLayout()); 

    this.getContentPane().add(textArea);

    this.setMenuBar(this.menuBar);
    this.menuBar.add(this.file);

    this.setMenuBar(this.menuBar);
    this.menuBar.add(this.shortcut);
    //EDIT//
    this.setMenuBar(this.menuBar);
    this.menuBar.add(this.edit);

    this.edit.setLabel("Edit");
    this.shortcut.setLabel("Shortcuts");

    this.file.setLabel("File");


    this.openFile.setLabel("Open");
    this.openFile.addActionListener(this);
    this.openFile.setShortcut(new MenuShortcut(KeyEvent.VK_O, false)); 
    this.file.add(this.openFile); 


    this.saveFile.setLabel("Save");
    this.saveFile.addActionListener(this);
    this.saveFile.setShortcut(new MenuShortcut(KeyEvent.VK_S, false));
    this.file.add(this.saveFile);


    this.close.setLabel("Close");
    this.close.setShortcut(new MenuShortcut(KeyEvent.VK_F4, false));
    this.close.addActionListener(this);
    this.file.add(this.close);

    //REDO//
    this.redoFile.setLabel("Redo");
    this.redoFile.setShortcut(new MenuShortcut(KeyEvent.VK_F4, false));
    this.redoFile.addActionListener(this);
    this.edit.add(this.redoFile);
    //UNDO//
    this.undoFile.setLabel("Undo");
    this.undoFile.setShortcut(new MenuShortcut(KeyEvent.VK_F4, false));
    this.undoFile.addActionListener(this);
    this.edit.add(this.undoFile);

    this.cut.setLabel("Cut");
    this.cut.setShortcut(new MenuShortcut(KeyEvent.VK_T, false));
    this.cut.addActionListener(this);
    this.shortcut.add(this.cut);

    this.copy.setLabel("Copy");
    this.copy.setShortcut(new MenuShortcut(KeyEvent.VK_C, false));
    this.copy.addActionListener(this);
    this.shortcut.add(this.copy);

    this.paste.setLabel("Paste");
    this.paste.setShortcut(new MenuShortcut(KeyEvent.VK_V, false));
    this.paste.addActionListener(this);
    this.shortcut.add(this.paste);

    this.setBackground.setLabel("Set Background");
    this.setBackground.setShortcut(new MenuShortcut(KeyEvent.VK_B, false));
    this.setBackground.addActionListener(this);
    this.edit.add(this.setBackground);
}


public void actionPerformed(ActionEvent e) {
    if (e.getSource() == this.close)
        this.dispose();


    else if (e.getSource() == this.openFile) {
        JFileChooser open = new JFileChooser(); 
        int option = open.showOpenDialog(this); 
        if (option == JFileChooser.APPROVE_OPTION) {
            this.textArea.setText(""); 
            try {
                Scanner scan = new Scanner(new            

     FileReader(open.getSelectedFile().getPath()));
                while (scan.hasNext())
                    this.textArea.append(scan.nextLine() + "\n"); 
            } catch (Exception ex) { 
                System.out.println(ex.getMessage());
            }
        }
    }


    else if (e.getSource() == this.saveFile) {
        JFileChooser save = new JFileChooser(); 
        int option = save.showSaveDialog(this); 
        if (option == JFileChooser.APPROVE_OPTION) {
            try {
                BufferedWriter out = new BufferedWriter(new   

  FileWriter(save.getSelectedFile().getPath()));
                out.write(this.textArea.getText());
                out.close(); 
            } catch (Exception ex) { 
                System.out.println(ex.getMessage());
            }
        }
    }
}

public static void main(String args[]) {
    Notepad app = new Notepad();
    app.setVisible(true);
 ;
    //JFrame f = new JFrame ("Display Color");
    app.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

    JPanel cp = new JPanel();
    cp.setBackground(Color.white);
    cp.setPreferredSize(new Dimension (350, 150));
    app.getContentPane().add(cp);
    app.pack();

    Color s = Color.white;

    s = JColorChooser.showDialog(app, "Choose Your Color", s);
    textArea.setBackground(s);
}

} }

I didn't try, but it should work: 我没有尝试,但是应该可以:

btnNotepad.addActionListener(new ActionListener()
{
  public void actionPerformed(ActionEvent e)
  {
    setContentPane(newPanel); //Your new JPanel
    invalidate();
    validate();
  }
}); 

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

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