【发布时间】:2013-11-14 18:05:23
【问题描述】:
我对 java 有点陌生,八月份刚开始上高中水平的课程。我还在学习基础知识,对JOptionPane、Scanner、Array和系统行等基础知识有了大概的了解。我的问题是,是否有办法创建一个独立的 Java 程序,您只需双击桌面上的图标即可启动它。如果是这样,有没有办法创建文件转储,您只能通过密码访问它?我已经有一个基本的登录程序,它允许基于预定的用户和密码进行访问。该程序的目标是在想要拥有它的人之间创建一个安全的(即使它是基本的)文件共享,并阻止那些没有的人共享,其中包含特定文件(.docx、.jpeg、.pptx 等.) 用于学校工作。如果是这样,是否还有一种方法可以将这些文件的访问权限限制为只能通过该程序访问?
这是我到目前为止的代码:
import javax.swing.JOptionPane.*;
import java.lang.Math.*;
import java.lang.System.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JFrame;
public class UserLog extends JFrame
{
public static void main(String[]Args) throws InterruptedException
{
boolean isValid=false;
while(!isValid)
{
// Components related to "login" field
JLabel label_loginname = new JLabel("Enter your login name:");
JTextField loginname = new JTextField(15);
// loginname.setText("EnterLoginNameHere");
// Pre-set some text
// Components related to "password" field
JLabel label_password = new JLabel("Enter your password:");
JPasswordField password = new JPasswordField();
// password.setEchoChar('@');
// Sets @ as masking character
// password.setEchoChar('\000');
// Turns off masking
JCheckBox rememberCB = new JCheckBox("Remember me");
Object[] array = {label_loginname,
loginname,
label_password,
password,
rememberCB};
Object[] options = {"Login", "Cancel"};
int res = JOptionPane.showOptionDialog(null,
array,
"Login",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, //do not use a custom Icon
options, //the titles of buttons
options[0]); //default button title
// User hit Login
if (res == 0)
{
System.out.println( "Login" );
}
// User hit CANCEL
if (res == 1)
{
System.out.println( "Canceled" );
}
// User closed the window without hitting any button
if (res == JOptionPane.CLOSED_OPTION)
{
System.out.println( "CLOSED_OPTION" );
}
// Output data in "login" field, if any
String newloginname = loginname.getText();
String newpassword = new String(password.getPassword());
if (newloginname.equalsIgnoreCase("Cody_Coulter") && newpassword.equals("cheche1"))
{
System.out.println("Login Successful!");
boolean selectedCB = rememberCB.isSelected();
System.out.println( "selectedCB: " + selectedCB );
Thread.sleep(3000);
Object[] array1= {"It's about time to choose"};
Object[] options1= {"Leave", "Keep Going"};
int res1 = JOptionPane.showOptionDialog(null,
array1,
"There",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, //do not use a custom Icon
options1, //the titles of buttons
options1[0]); //default button title
if(res1==1)
{
String name1 = JOptionPane.showInputDialog(null,
"What is your name?");
int length = 0;
length = newpassword.length();
String Pass = "*";
newpassword =newpassword.replaceAll(".","*");
System.out.println("Username: "+newloginname+"\nPassword: "+
newpassword+"\nName: "+name1);
}
}
else {
JOptionPane.showMessageDialog(null,"Wrong Username or Password!");
isValid=false;
}
}
// Output data in "password" field, if any
// Output state of "remember me" check box
}
}
这只是程序的登录屏幕,但我只想能够:
- 选择编辑用户或密码,例如输入 old pass: now new: repeat: 并保存新密码。
- 创建只能通过此程序访问的文件转储,其中包含 docx、pptx 等基本文件
- 如何编辑用户名、密码或向程序添加新用户,只有拥有管理员密码。
-
如果我有这个程序的唯一帐户,而其他人想要一个,则阅读内容为:
Username: _____ Password: _____ Retype Password:_____ Authentication: _____然后它会创建一个永久帐户。
很抱歉提出了一些非正统的问题,但我非常好奇,而且对这些板子很陌生。我只想知道java是否可以,如果可以,我可以在哪里参考这些材料来学习/自学。
【问题讨论】:
-
是的,你可以做所有这些事情。制作独立的 Java 应用程序很容易,只需导出为 JAR。其他的东西有点复杂,你描述的比你的问题标题高级得多。如果你还没有使用过基本的文件 IO,我会说这在这一点上是不现实的。
-
当然可以在 Java 中从头开始重新实现 TrueCrypt,但是对于 SO 问题来说,教如何做到这一点是一项相当大的任务......!或许您可以分解您对无法完成的特定任务的具体问题,并提出易于给出正确技术答案的问题?
-
感谢您的意见。抱歉,问了这么多,只是还不习惯这些论坛和他们的措辞。不过非常感谢大家,下次我一定会实施的。
标签: java swing joptionpane