Java中受密码保护的记事本的问题

威尔

我在理解为什么我的代码无法运行时遇到问题。

就目前而言,Eclipse不会向我显示任何错误,但是当我尝试运行它时,代码不会启动。

我程序的想法是使用JFrame进行密码保护的记事本。

这是代码:

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

public class notepad extends JFrame implements ActionListener {
    public static void main(String args[]){}
    private TextArea textArea = new TextArea("", 0,0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    private MenuBar menuBar = new MenuBar();
    private Menu file = new Menu();
    private MenuItem openFile = new MenuItem(); 
    private MenuItem saveFile = new MenuItem();
    private MenuItem close = new MenuItem(); 
    public notepad() {
        this.setSize(700, 500); 
        this.setTitle("Projet Java"); 
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.textArea.setFont(new Font("Helvetica", Font.ROMAN_BASELINE, 12));
        this.getContentPane().setLayout(new BorderLayout()); 
        this.getContentPane().add(textArea);
        this.setMenuBar(this.menuBar);
        this.menuBar.add(this.file); 
        this.file.setLabel("File");
        this.openFile.setLabel("Open");
        this.openFile.addActionListener(this);
        this.file.add(this.openFile); 
        this.saveFile.setLabel("Save");
        this.saveFile.addActionListener(this);
        this.file.add(this.saveFile);
    }

    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());
                }
            }
        }
    }
        static class password{ 
        public static String password = "password";

        public static void main(String args[]) {
                JFrame box = new JFrame("Password");
                box.setVisible(true);
                box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                box.setSize(400,100);

                JPasswordField pass = new JPasswordField(10);
                pass.setEchoChar('*');  
            }
                static class AL implements ActionListener{
                    public void actionPerformed(ActionEvent e){
                    JPasswordField input = (JPasswordField) e.getSource();
                    char[] pass = input.getPassword();
                    String yes = new String(pass);

                    if (yes.equals(password)){ 
                        notepad app = new notepad();
                        app.setVisible(true);
                    }else{
                        System.exit(0);
                    }


                    }
                }
        }
}
火影忍者Biju模式
  • 您的第一个main方法是public,但为空,因此将不执行任何操作。
  • 您在非公共类中拥有第二个main方法,因此JVM永远不会找到它来启动程序。
  • 您将AWT图形组件与Swing组件混合使用,规则是选择一种,决不要将两者混合。
  • 应该在其中启动所有Swing应用程序,SwingUtilities.invokeLater以确保所有修改GUI的线程均由事件分派器线程(EDT)执行。
  • 使用时,请JTextArea始终将其放在里面JScrollPane,以便能够显示超出组件大小的文本。

这是经过修改的测试代码:

import java.awt.Font;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

@SuppressWarnings("serial")
public class Notepad extends JFrame
{
    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                try
                {
                    UIManager.setLookAndFeel(
                            "javax.swing.plaf.nimbus.NimbusLookAndFeel");
                }
                catch (ClassNotFoundException | InstantiationException
                        | IllegalAccessException
                        | UnsupportedLookAndFeelException e)
                {
                    e.printStackTrace();
                }
                new Notepad();
            }
        });
    }

    private JTextArea textArea = new JTextArea("", 0, 0);
    private JMenuBar menuBar = new JMenuBar();
    private JMenu file = new JMenu();
    private JMenuItem openFile = new JMenuItem();
    private JMenuItem saveFile = new JMenuItem();
    private JMenuItem close = new JMenuItem();
    private JFileChooser open, save;

    public Notepad()
    {
        setBounds(100, 100, 700, 500);
        setTitle("Projet Java");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        textArea.setFont(new Font("Helvetica", Font.ROMAN_BASELINE, 12));
        add(new JScrollPane(textArea));

        open = new JFileChooser();
        save = new JFileChooser();

        setJMenuBar(menuBar);
        menuBar.add(file);
        file.setText("File");

        openFile.setText("Open");
        openFile.addActionListener(e -> {
            if (open.showOpenDialog(
                    Notepad.this) == JFileChooser.APPROVE_OPTION)
            {
                textArea.setText("");
                try (BufferedReader br = new BufferedReader(
                        new FileReader(open.getSelectedFile())))
                {
                    String s = null;
                    while ((s = br.readLine()) != null)
                    {
                        textArea.append(s + "\n");
                    }
                }
                catch (Exception ex)
                {
                    System.out.println(ex.getMessage());
                }
            }
        });
        file.add(openFile);

        saveFile.setText("Save");
        saveFile.addActionListener(e -> {
            if (save.showSaveDialog(
                    Notepad.this) == JFileChooser.APPROVE_OPTION)
            {
                try (BufferedWriter out = new BufferedWriter(
                        new FileWriter(save.getSelectedFile())))
                {
                    out.write(textArea.getText());
                }
                catch (Exception ex)
                {
                    System.out.println(ex.getMessage());
                }
            }
        });
        file.add(saveFile);

        close.setText("Close");
        close.addActionListener(e -> {
            System.exit(0);
        });
        file.add(close);

        setVisible(true);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android中受密码保护的屏幕

来自分类Dev

恢复IntelliJ IDEA中受主密码保护的密码

来自分类Dev

使用Java读取受密码保护的Excel文件(.xlsx)

来自分类Dev

在R中刮除受密码保护的网站

来自分类Dev

在vbsript中解压缩受密码保护的文件

来自分类Dev

Mac OSX中受密码保护的文件

来自分类Dev

使用PHP在wamp中打开受密码保护的EXCEL

来自分类Dev

使用UDJC在Pentaho中读取受密码保护的PDF

来自分类Dev

如何在 20.04 中创建受密码保护的存档

来自分类Dev

无法使用Java在AutoIt中打开记事本

来自分类Dev

检测受密码保护的单词文件

来自分类Dev

忽略受密码保护的Excel文件

来自分类Dev

特定的Rails路由受密码保护

来自分类Dev

如何使pdf文件受密码保护?

来自分类Dev

创建受密码保护的文件

来自分类Dev

忽略受密码保护的Excel文件

来自分类Dev

检测受密码保护的单词文件

来自分类Dev

受密码保护的域名glassfish

来自分类Dev

PHPMailer受密码保护的附件

来自分类Dev

宏以保存受密码保护的文件

来自分类Dev

与受密码保护的Jupyter / api交互

来自分类Dev

记事本++查找和替换问题

来自分类Dev

从记事本++文件中删除行号

来自分类Dev

记事本中内置的Wordpress函数

来自分类Dev

替换记事本中的增量数字++

来自分类Dev

记事本++中的标题栏

来自分类Dev

如何禁用记事本++中的链接?

来自分类Dev

在记事本++中查找模式

来自分类Dev

记事本++中的字符数