JAVA JDK不同版本對JFrame的支援
最近,一新手學習JAVA,其摸索到了JFrame,在使用中遇到了一個問題,就是JDK1.8對JFrame的set方法不完全支援。
環境資訊:
作業系統:DELL 7470/windows 7 X86_64
開發平臺:MyEclipse 8.5
原始碼:
package com.cn;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* @date 2018-1-23
* @author zhul
* @version 1.0
* @功能:實現一個CS模式的使用者登入窗體,有使用者登入名和密碼,有登入和重置2個按鈕,實現簡單的登入驗證
*/
class LoginCheck{//使用者登入校驗類
private String name;//宣告使用者登入名變數
private String password;//宣告使用者登入密碼
public LoginCheck(String name,String password){//LoginCheck全參構造方法
this.name=name;
this.password=password;
}
public boolean validate(){//登入校驗方法
if("zhul".equals(name)&&"P@ssw0rd".equals(password)){//用寫死的登入名和密碼執行登入校驗
return true;
}else{
return false;
}
}
}
class ActionHandle{
private JFrame frame = new JFrame("Welcome To TEST");//宣告一個窗體
private JButton submit = new JButton("登入");//宣告一個登入按鈕
private JButton reset = new JButton("重置");//宣告一個重置按鈕
private JLabel nameLab = new JLabel("使用者名稱:");//宣告一個使用者名稱標籤
private JLabel passLab = new JLabel("密 碼:");//宣告一個密碼標籤
private JLabel infoLab = new JLabel("使用者登入系統");//宣告一個使用者登入資訊提示
private JTextField nameText = new JTextField();//宣告一個使用者名稱文字輸入框
private JPasswordField passText = new JPasswordField(); //宣告一個密碼輸入框
public ActionHandle(){
Font fnt = new Font("Serief",Font.BOLD,12);//定義窗體字型格式
infoLab.setFont(fnt);//使用者登入資訊提示應用定義的字型格式
submit.addActionListener(new ActionListener(){//在窗體主控制方法中新增登入按鈕監聽方法
public void actionPerformed(ActionEvent arg0){//實現登入按鈕監聽必須實現的方法
if(arg0.getSource() == submit){ //登入按鈕點選執行登入校驗
String tname = nameText.getText();
String tpass = new String(passText.getPassword());
LoginCheck log = new LoginCheck(tname,tpass);
if(log.validate()){
infoLab.setText("登入成功!");
}else{
infoLab.setText("登入失敗,請重試!");
}
}
if(arg0.getSource() == reset) {//重置按鈕點選執行使用者名稱和密碼文字框清空
System.out.println("submit-reset is called!");
nameText.setText("");
passText.setText("");
infoLab.setText("user login system!");
}
}
});
reset.addActionListener(new ActionListener(){//在窗體主控制方法中新增重置按鈕監聽方法
public void actionPerformed(ActionEvent arg0){//實現重置按鈕監聽必須實現的方法
if(arg0.getSource() == reset) {//重置按鈕點選執行使用者名稱和密碼文字框清空
System.out.println("reset is called!");
nameText.setText("");
passText.setText("");
infoLab.setText("user login system!");
}
}
});
frame.addWindowListener(new WindowAdapter(){//在窗體中新增監聽
public void windowClosing(WindowEvent arg0){//窗體退出
System.exit(1);
}
});
frame.setLayout(null);//使用絕對定位
nameLab.setBounds(5,5,60,20);//定義使用者名稱標籤的位置及大小
passLab.setBounds(5,30,60,20);
infoLab.setBounds(5,65,220,30);
nameText.setBounds(65,5,100,20);
passText.setBounds(65,30,100,20);
submit.setBounds(165,5,60,20);
reset.setBounds(165,30,60,20);
frame.add(nameLab);//在窗體中新增標籤
frame.add(passLab);
frame.add(infoLab);
frame.add(nameText);
frame.add(passText);
frame.add(submit);
frame.add(reset);
frame.setSize(280,130);//設定窗體寬和高
frame.setVisible(true); //設定窗體顯示屬性為顯示
}
}
public class MyActionEventDemo03 {//窗體測試主方法
public static void main(String[] args){
new ActionHandle();
}
}
1、使用JDK1.8時,程式碼提示編譯錯誤
2、使用JDK 1.7.0_67/JDK 1.6.0_13,程式碼能正常工作
工程使用JDK 1.7.0_67/JDK 1.6.0_13,類 MyActionEventDemo03沒有編譯告警
工程使用JDK 1.7.0_67/JDK 1.6.0_13,類 MyActionEventDemo03能夠正常執行
--測試登入按鈕
--測試重置按鈕
環境資訊:
作業系統:DELL 7470/windows 7 X86_64
開發平臺:MyEclipse 8.5
原始碼:
package com.cn;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* @date 2018-1-23
* @author zhul
* @version 1.0
* @功能:實現一個CS模式的使用者登入窗體,有使用者登入名和密碼,有登入和重置2個按鈕,實現簡單的登入驗證
*/
class LoginCheck{//使用者登入校驗類
private String name;//宣告使用者登入名變數
private String password;//宣告使用者登入密碼
public LoginCheck(String name,String password){//LoginCheck全參構造方法
this.name=name;
this.password=password;
}
public boolean validate(){//登入校驗方法
if("zhul".equals(name)&&"P@ssw0rd".equals(password)){//用寫死的登入名和密碼執行登入校驗
return true;
}else{
return false;
}
}
}
class ActionHandle{
private JFrame frame = new JFrame("Welcome To TEST");//宣告一個窗體
private JButton submit = new JButton("登入");//宣告一個登入按鈕
private JButton reset = new JButton("重置");//宣告一個重置按鈕
private JLabel nameLab = new JLabel("使用者名稱:");//宣告一個使用者名稱標籤
private JLabel passLab = new JLabel("密 碼:");//宣告一個密碼標籤
private JLabel infoLab = new JLabel("使用者登入系統");//宣告一個使用者登入資訊提示
private JTextField nameText = new JTextField();//宣告一個使用者名稱文字輸入框
private JPasswordField passText = new JPasswordField(); //宣告一個密碼輸入框
public ActionHandle(){
Font fnt = new Font("Serief",Font.BOLD,12);//定義窗體字型格式
infoLab.setFont(fnt);//使用者登入資訊提示應用定義的字型格式
submit.addActionListener(new ActionListener(){//在窗體主控制方法中新增登入按鈕監聽方法
public void actionPerformed(ActionEvent arg0){//實現登入按鈕監聽必須實現的方法
if(arg0.getSource() == submit){ //登入按鈕點選執行登入校驗
String tname = nameText.getText();
String tpass = new String(passText.getPassword());
LoginCheck log = new LoginCheck(tname,tpass);
if(log.validate()){
infoLab.setText("登入成功!");
}else{
infoLab.setText("登入失敗,請重試!");
}
}
if(arg0.getSource() == reset) {//重置按鈕點選執行使用者名稱和密碼文字框清空
System.out.println("submit-reset is called!");
nameText.setText("");
passText.setText("");
infoLab.setText("user login system!");
}
}
});
reset.addActionListener(new ActionListener(){//在窗體主控制方法中新增重置按鈕監聽方法
public void actionPerformed(ActionEvent arg0){//實現重置按鈕監聽必須實現的方法
if(arg0.getSource() == reset) {//重置按鈕點選執行使用者名稱和密碼文字框清空
System.out.println("reset is called!");
nameText.setText("");
passText.setText("");
infoLab.setText("user login system!");
}
}
});
frame.addWindowListener(new WindowAdapter(){//在窗體中新增監聽
public void windowClosing(WindowEvent arg0){//窗體退出
System.exit(1);
}
});
frame.setLayout(null);//使用絕對定位
nameLab.setBounds(5,5,60,20);//定義使用者名稱標籤的位置及大小
passLab.setBounds(5,30,60,20);
infoLab.setBounds(5,65,220,30);
nameText.setBounds(65,5,100,20);
passText.setBounds(65,30,100,20);
submit.setBounds(165,5,60,20);
reset.setBounds(165,30,60,20);
frame.add(nameLab);//在窗體中新增標籤
frame.add(passLab);
frame.add(infoLab);
frame.add(nameText);
frame.add(passText);
frame.add(submit);
frame.add(reset);
frame.setSize(280,130);//設定窗體寬和高
frame.setVisible(true); //設定窗體顯示屬性為顯示
}
}
public class MyActionEventDemo03 {//窗體測試主方法
public static void main(String[] args){
new ActionHandle();
}
}
1、使用JDK1.8時,程式碼提示編譯錯誤
2、使用JDK 1.7.0_67/JDK 1.6.0_13,程式碼能正常工作
工程使用JDK 1.7.0_67/JDK 1.6.0_13,類 MyActionEventDemo03沒有編譯告警
工程使用JDK 1.7.0_67/JDK 1.6.0_13,類 MyActionEventDemo03能夠正常執行
--測試登入按鈕
--測試重置按鈕
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2150425/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不同JDK版本之間的intern()方法的區別-JDK6 VS JDK6+JDK
- 不同版本JDK下載 - All Java SE Downloads on MOS [ID 1439822.1]JDKJava
- bitShark對Android版本的支援Android
- 亞馬遜推出具有長期支援的免費JDK版本亞馬遜JDK
- Java JDK各個版本的新特性、屬性(JVM)JavaJDKJVM
- aix不同版本安裝oracle的不同版本時的要求AIOracle
- Spring系列:Spring版本和JDK版本對應關係SpringJDK
- ubuntu的不同版本Ubuntu
- Java/JDK各版本主要特性彙總JavaJDK
- Java9系列第三篇-同一個Jar支援多JDK版本執行JavaJARJDK
- 淺析py-faster-rcnn中不同版本caffe的安裝及其對應不同版本cudnn的解決方案ASTCNNDNN
- Linux更換jdk版本,java -version還是原來的版本問題LinuxJDKJava
- JDK版本為5.0但java -version卻顯示版本號為1.4.2的原因JDKJava
- 讓PDF.NET支援不同版本的SQL Server Compact資料庫SQLServer資料庫
- 電腦同時安裝兩個版本的JDK後,修改JAVA_HOME後,java -version 仍然是之前的JDK版本的解決辦法JDKJava
- Laravel對不同版本的MySQL字元編碼報錯問題LaravelMySql字元
- 為不同專案指定不同的 PHP 版本PHP
- 最新的Java SE平臺和JDK版本釋出計劃JavaJDK
- Eclipse-Eclipse和對應的Jdk版本匹配情況EclipseJDK
- 【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事項Oracle
- java JDK1.7版本新特性詳解JavaJDK
- JDK 版本變化JDK
- JDK版本 - Major VersionJDK
- Debian終止對3.0版本的安全支援
- Java對併發程式設計的支援Java程式設計
- lua不同版本的位操作
- oracle不同版本的官方文件Oracle
- Java 18和JDK 18可用於生產的GA版本釋出JavaJDK
- Eclipse Memory Analyzer (MAT)的安裝後提示JDK版本不對要升級到jdk_17EclipseJDK
- Java swing JFrame用repaint出現閃爍的問題解決JavaAI
- 檢視JAR包的JDK版本JARJDK
- go-carbon 2.1.0 版本釋出, 增加對 go1.18 版本的相容支援Go
- 使用不同版本vscdoe除錯不同版本nodejs除錯NodeJS
- JDK的第三個LTS版本JDK17來了JDK
- Java體系結構對資訊保安的支援Java
- JDK的版本不一樣,對xml的解析器也不一樣.JDKXML
- 多個Jdk版本(轉)JDK
- jdk 多版本切換JDK