十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍了java通过JFrame做一个登录系统的界面完整代码示例,具有一定借鉴价值,需要的朋友可以参考下。
专注于为中小企业提供成都网站设计、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业友谊免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
在java的JFrame内通过创建匿名对象的方式做登录界面
package com.sxt;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginFrame extends JFrame{
JTextField txtname=new JTextField();
JPasswordField txtpass=new JPasswordField();
JButton bl=new JButton("登录");
JButton bg=new JButton("关闭");
//构造无参构造器把主要的方法放在构造器里,然后在main方法里面调
public LoginFrame(){
setBounds(25,25,250,250);
Container c = getContentPane();
c.setLayout(new GridLayout(4,2,10,10));
c.add(new JLabel("用户名"));
c.add(txtname);
c.add(new JLabel("密码"));
c.add(txtpass);
c.add(bl);
c.add(bg);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//注意:此处是匿名内部类
bg.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
}
);
//注意:此处是匿名内部类
bl.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
public static String c(String paramString) {
if ((paramString == null) || (paramString.length() == 0)) throw new IllegalArgumentException("String to encript cannot be null or zero length"); // paramString字符串不能为空,否则抛出异常
StringBuffer localStringBuffer1 = newStringBuffer();
try { MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); //建立一个md5消息摘要对象
byte[] arrayOfByte1 = paramString.getBytes();
localMessageDigest.update(arrayOfByte1); // 把paramString数据放入arrayOfByte1,然后更新消息摘要对象(这边估计update的参数必须是byte类型的,所以才将paramString做了个类型转换)
byte[] arrayOfByte2 = localMessageDigest.digest(); //将更新的摘要内容取出来,这边是已经经过md5运算了。
int i = 0;
while (true) {
int j = arrayOfByte2.length;
if (i = j)
label66: return localStringBuffer1.toString().toUpperCase(); //如果ij。说明是摘要数据的长度为0,返回localStringBuffer1就行了。或者是当前的数据已经取完。
if ((arrayOfByte2[i] 0xFF) = 16) //如果第i个字节大于16,退出循环。
break;
StringBuilder localStringBuilder = new StringBuilder("0"); //新建一个StringBuilder对象。
String str1 = Integer.toHexString(arrayOfByte2[i] 0xFF);//这边的arrayOfByte2[i] 0xFF的意思相当于将字符串转化成16进制的整数了,再把它转化成16进制的字符串。
String str2 = str1;
StringBuffer localStringBuffer2 = localStringBuffer1.append(str2); //将字符串放进 localStringBuffer2里面
i += 1; //循环下一个字节的内容
}
String str3 = Integer.toHexString(arrayOfByte2[i] 0xFF); // 这边的i是跳出循环的i了,次数arrayOfByte2[i] 0xFF) = 16
StringBuffer localStringBuffer3 = localStringBuffer1.append(str3);
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
{ localNoSuchAlgorithmException.printStackTrace(); break label66: } }
完成的大体功能应该是;生成一个摘要,把摘要中的数据按照某种方式存储。具体干什么我没大看懂
我做过的一个项目是使用XML传输来实现的。首先客户端登录请求,服务器判断是否合法,合法就返回一个ticket码,客户端需要记录这个ticket码,服务器也需要将ticket记录到数据库里面,以后客户端的连接就通过ticket来判断识别是哪个用户。其实用XML做数据交换是肯定能实现的,只是麻烦的点,但是好处是对于C做的客户端照样通用。如果你只是需要简单的登录的话,也可以把XML交换换成HTTP请求,将用户名和密码放在请求报文的头里面。
在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过addJavas criptInterface方法,可以将Java的类注册进webkit,给网页上的js进行调用,而且还可以通过loadUrl方法是给webkit传递一个URL,供浏览器来进行解析,实现Java和js交互。
要想运行网页上的js脚本,webview必须设置支持Javas cript。
Java代码
1mWebview.getSettings().setJavas criptEnabled(true);
然后是设置webview要加载的网页:
web的网页:webView.loadUrl("");
本地的网页:webView.loadUrl(""); //本地的存放在:assets文件夹中
webview做完基本的初始化后我们还要要给它,加进一个回调的代理类Javas criptInterface,并给它一个调用的名称:ncp
Java代码
1mWebView.addJavas criptInterface(new Javas criptInterface(),"ncp");
Javas criptInterface可以是一个普通的Java类,类实现的方法,均可被js回调:
Java代码
final class Javas criptInterface {
public int callOnJs() {
return 1000;
}
public void callOnJs2(String mode) {
//TODO
}
}
Java要调用js的方法,只需知道js的方法名称即可:
Java代码
1mWebView.loadUrl("javas cript:onSaveCallback()");
你可以使用以下代码代替你的 ACTION_CALL(推荐):
Intent intent = new Intent(Intent.ACTION_DIAL);
也可以参考这里,在 manifest 中添加
android.permission.PHONE_CALL
的权限,并且在拨打电话之前检验权限:
//检查是否已经给了权限
int checkpermission= ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION);
if(checkpermission!=PackageManager.PERMISSION_GRANTED){ //没有给权限,申请
//参数分别是当前活动,权限字符串数组,requestcode
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
// 暂时使用 DIAL 代替 CALL
Intent intent = new Intent(Intent.PHONE_DIAL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
} else {
// 直接使用 CALL
Intent intent = new Intent(Intent.PHONE_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
然后添加一个方法:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//grantResults数组与权限字符串数组对应,里面存放权限申请结果
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
// 放已授权的处理方法
}else{
// 放拒绝授权的处理方法
Toast.makeText(MainActivity.this,"拒绝授权",Toast.LENGTH_SHORT).show();
}
}
参考:CSDN