本人急忙做的:有什么不合要求的請?jiān)俑嬖V我:
創(chuàng)新互聯(lián)建站是一家以網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都酒店設(shè)計(jì)等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
package?show;
import?javax.swing.*;
import?java.awt.*;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
public?class?Test?extends?JFrame?implements?ActionListener
{
GridBagLayout?g=new?GridBagLayout();
GridBagConstraints?c=new?GridBagConstraints();
Test(String?str)
{
super(str);
setSize(300,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(g);
//調(diào)用方法
addComponent();
submit.addActionListener(this);
setVisible(true);
setLocationRelativeTo(null);//設(shè)居中顯示;
}
//在這個(gè)方法中將會(huì)添加所有的組件;
//使用的網(wǎng)格包布局;希望樓主能看懂;
public?void?addComponent()
{
//個(gè)人信息登記
noteInformation=new?JLabel("個(gè)人信息登記:");
add(g,c,noteInformation,0,0,1,1);
//用戶名
userName=new?JLabel("用戶名:");
add(g,c,userName,0,1,1,1);
//用戶名輸入框
textUserName=new?JTextField(10);
add(g,c,textUserName,1,1,2,1);
//密碼:
password=new?JLabel("密碼:");
add(g,c,password,0,2,1,1);
//密碼輸入框
textUserPassword=new?JTextField(10);
add(g,c,textUserPassword,1,2,2,1);
//性別
sex=new?JLabel("性別:");
add(g,c,sex,0,3,1,1);
//男?女單選框
sexMan=new?JRadioButton("男");
add(g,c,sexMan,1,3,1,1);
sexGirl=new?JRadioButton("女");
add(g,c,sexGirl,2,3,1,1);
ButtonGroup?group=new?ButtonGroup();
group.add(sexMan);
group.add(sexGirl);
//出生日期
birthday=new?JLabel("出生日期:");
add(g,c,birthday,0,4,1,1);
//復(fù)選框及其內(nèi)容
String[]?YEARS=new?String[65];
for(int?i=1950,k=0;i=2014;i++,k++)
{
YEARS[k]=i+"年";
}
year=new?JComboBox(YEARS);
add(g,c,year,1,4,1,1);
//復(fù)選框及內(nèi)容
month=new?JComboBox(MONTH);
add(g,c,month,2,4,1,1);
//submit按鈕
submit=new?JButton("submit");
c.insets=new?Insets(7,0,4,0);
add(g,c,submit,1,5,1,1);
result=new?JTextArea(15,20);
add(g,c,result,0,6,3,4);
}
/* public?void?ActionPerformed(ActionEvent?e)
{
String?s=textUserName.getText();
String?t=textUserPassword.getText();
String?k=sexMan.getText();
String?v=sexGirl.getText();
String?a=(String)?year.getSelectedItem();
String?b=(String)month.getSelectedItem();
String?num="用戶名:"+s+"\n"+"密碼:?"+t+"性別:?"+(k==null?v:k)+"\n"+"出生日期:"+a+"?"+b;
result.append(num);
}*/
public?void?add(GridBagLayout?g,GridBagConstraints?c,JComponent?jc,int?x?,int?y,int?gw,int?gh)
{
c.gridx=x;
c.gridy=y;
c.anchor=GridBagConstraints.WEST;
c.gridwidth=gw;
c.gridheight=gh;
g.setConstraints(jc,c);
add(jc);
}
public?static?void?main(String?args[])
{
new?Test("個(gè)人信息登記表");
}
JLabel?noteInformation,userName,password;
JLabel?sex,birthday;
JTextField?textUserName,textUserPassword;
JRadioButton?sexMan,sexGirl;
JComboBox?year,month;
JButton?submit;
JTextArea?result;
final?String[]?MONTH={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
@Override
public?void?actionPerformed(ActionEvent?arg0)
{
String?s=textUserName.getText();
String?t=textUserPassword.getText();
String?k=sexMan.getText();
String?v=sexGirl.getText();
String?a=(String)?year.getSelectedItem();
String?b=(String)month.getSelectedItem();
String?num="用戶名:"+s+"\n"+"密碼:?"+t+"\n?性別:?"+(k==null?v:k)+"\n"+"出生日期:"+a+"?"+b;
result.setText(num);
}
}
按照你第2點(diǎn)描述,你僅僅是想實(shí)現(xiàn)隨即順序點(diǎn)名而已,并不是隨即點(diǎn)名。
我給你個(gè)解決方案:
在每次點(diǎn)中一名學(xué)生后,將java0803_students.txt文件中做個(gè)標(biāo)示,表示該學(xué)生已經(jīng)在本輪點(diǎn)名中被點(diǎn)過。
直到所有學(xué)生都點(diǎn)到后情況這個(gè)表示,準(zhǔn)備下一輪點(diǎn)名做標(biāo)記。
下面我給你一段偽代碼,包含了 random 的使用方法:
public class CallStudents(){
private static Random random = new Random();
public void call(){
// 重新設(shè)置學(xué)生被點(diǎn)名的標(biāo)示(根據(jù)點(diǎn)名情況)
reset();
long value = -1;
while (true) {
value = random.nextInt(maxValue + 1); // maxValue 是你當(dāng)前有學(xué)生的最大數(shù)目
//在這里讀取當(dāng)前隨即號對應(yīng)的學(xué)生記錄
String student = getStudentByID(value);
//判斷該學(xué)生是否被點(diǎn)過名
if(!checkCalled(student)){
// 設(shè)置已經(jīng)點(diǎn)過名
setCalled(student);
// 在控制臺上顯示被點(diǎn)名的學(xué)生信息
system.out.println(student);
// 結(jié)束循環(huán)
break;
}
}
}
private String getStudentByID(long id){
// 這個(gè)是讀取文件,需要你自己實(shí)現(xiàn)的
// 返回 java0803_students.txt 文件中對應(yīng)的學(xué)生記錄
}
private boolean checkCalled(String student){
// 至于是什么樣的規(guī)則,有你自己定義
// 我這里給你舉個(gè)例子
// 如果這條學(xué)生記錄中包含 一個(gè)字符為 called 的話,表明這名學(xué)生被點(diǎn)過名
if(student.indexOf("called") != -1){
retrn true;
}
return false;
}
private void setCalled(String student){
// 至于是什么樣的規(guī)則,有你自己定義
// 我這里給你舉個(gè)例子
// 設(shè)置學(xué)生已被點(diǎn)名
student += "_called";
// 將這個(gè)值重新寫回到你的java0803_students.txt 文件中,覆蓋愿信息!
}
private void reset(){
// 判斷是否所有學(xué)生都被點(diǎn)過名,如果點(diǎn)過名,清空所有學(xué)生被點(diǎn)名的標(biāo)記
// 這個(gè)實(shí)現(xiàn)有你自己定義,
// 這里我給你舉個(gè)例子
// 讀取文件,判斷每一個(gè)學(xué)生信息是否都標(biāo)有 called
// 如果都有,執(zhí)行刪除所有 called 的操作,并保存文件。
// 如果只有部分沒有,則表明本輪點(diǎn)名沒有結(jié)束,不做任何操作。
}
public static void main(String[] args){
String con = // 接受控制臺信息
if(con.equals("y")){
CallStudents call = new CallStudents();
call.call();
}
if(con.equals("n")){
// 結(jié)束程序
}
}
}
因?yàn)槟愕膇是在for循環(huán)中賦值,但是i的最新值是在下一次for循環(huán)時(shí)使用,比如,第一次for循環(huán)時(shí),i初始為0,在循環(huán)中賦值得到2,但是輸出的是初值0,2在第二次循環(huán)輸出,所以到最后一次循環(huán)你會(huì)少加了一個(gè)50,你可以改成b=52或者如下
int?sum?=?0;
for(int?i=0;i=50;i=i+2)
{
sum?=?sum+i;
System.out.println(sum);
}
最后,for循環(huán)很少你這種寫法的,可以參考我的例子。
要是類名直接調(diào)用的方法,那這個(gè)方法就是靜態(tài)的(static)方法,是不用new出新對象實(shí)例就可以直接調(diào)用的方法。例子如下:
class A{
public static void Method1(int a, int b){
//方法體
}
類名的命名是有講究的,類名、屬性名、變量名一般是名詞,或者是形容詞+名詞。
方法一般是動(dòng)詞,或者是動(dòng)詞+名詞,以AnnotationTest作為類名和以TestAnnotation作為類名是有區(qū)別的,前者是注解的測試,符合名詞的特征,后者是測試注解,聽起來就是一個(gè)動(dòng)作名稱,是方法的命名特征。
擴(kuò)展資料
關(guān)鍵詞主要有static和abstract兩個(gè)關(guān)鍵詞。有static修飾的方法叫做靜態(tài)方法。沒有的則叫非靜態(tài)方法。其中我們最熟悉的main方法就有static 修飾。這個(gè)方法也是我最不熟悉搞不懂的方法。
static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對象就可以進(jìn)行訪問,因此對于靜態(tài)方法來說,是沒有this的。因?yàn)樗灰栏接谌魏螌ο?,既然都沒有對象,就談不上this了。
用static修飾的方法。由于類方法是屬于整個(gè)類的,所以類方法的方法體中不能有與類的對象有關(guān)的內(nèi)容。即類方法體有如下限制:
1、類方法中不能引用對象變量;
2、類方法中不能調(diào)用類的對象方法;
3、在類方法中不能調(diào)使用super,this關(guān)鍵字;
4、類方法不能被覆蓋。
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.swing.*;public class Login extends JFrame{
JLabel user,passwd;
JTextField userput;
JPasswordField passput;
JButton denglu,tuichu;
public Login(){
super("用戶登錄");
Container c=getContentPane();
c.setLayout(null);
Font f=new Font("宋體",Font.PLAIN,12);
user=new JLabel("賬號");
passwd=new JLabel("密碼");
userput=new JTextField();
passput=new JPasswordField();
denglu=new JButton("登錄");
denglu.setFont(f);
denglu.addActionListener(new NewAction());
tuichu=new JButton("退出");
tuichu.setFont(f);
tuichu.addActionListener(new NewAction());
user.setBounds(50,50,60,20);
userput.setBounds(110,50,150,20);
passwd.setBounds(50,80,60,20);
passput.setBounds(110,80,150,20);
denglu.setBounds(50,160,60,30);
tuichu.setBounds(200,160,60,30);
c.add(user);
c.add(userput);
c.add(passwd);
c.add(passput);
c.add(denglu);
c.add(tuichu);
setSize(350, 300);
setVisible(true);
}
class NewAction implements ActionListener{
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=CDM";
String user="sa";
String passwd="394513265";
java.sql.Connection con;
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con= DriverManager.getConnection(url,user,passwd);
}catch(Exception ep){
JOptionPane.showMessageDialog(null, "加載驅(qū)動(dòng)失敗!");
}
if(e.getSource()==denglu){
Find();
}
if(e.getSource()==tuichu){
dispose();
}
} public void Find(){
String lk="select * from login";
try{
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(lk);
while(rs.next()){
if(rs.getString(1).equals(userput.getText()) rs.getString(2).equals(passput.getText()))
new MainClient();
else
JOptionPane.showMessageDialog(null, "用戶名或密碼錯(cuò)誤");
}
rs.close();
}catch(SQLException p){
JOptionPane.showMessageDialog(null, p.getMessage());
}
}
}
public static void main(String[] args) {
Login l=new Login();
l.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
步驟就是建個(gè)工程 然后建個(gè)class
概述
具體框架使用jframe,文本框組件:JTextField;密碼框組件:JPasswordField;標(biāo)簽組件:JLabel;復(fù)選框組件:JCheckBox;單選框組件:JRadioButton;按鈕組件JButton。
登錄界面:
代碼實(shí)例
import javax.swing.*;
import java.awt.*; ? //導(dǎo)入必要的包
public class denglu extends JFrame{
JTextField jTextField ;//定義文本框組件
JPasswordField jPasswordField;//定義密碼框組件
JLabel jLabel1,jLabel2;
JPanel jp1,jp2,jp3;
JButton jb1,jb2; //創(chuàng)建按鈕
public denglu(){
jTextField = new JTextField(12);
jPasswordField = new JPasswordField(13);
jLabel1 = new JLabel("用戶名");
jLabel2 = new JLabel("密碼");
jb1 = new JButton("確認(rèn)");
jb2 = new JButton("取消");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//設(shè)置布局
this.setLayout(new GridLayout(3,1));
jp1.add(jLabel1);
jp1.add(jTextField);//第一塊面板添加用戶名和文本框
jp2.add(jLabel2);
jp2.add(jPasswordField);//第二塊面板添加密碼和密碼輸入框
jp3.add(jb1);
jp3.add(jb2); //第三塊面板添加確認(rèn)和取消
// ? ? ? ?jp3.setLayout(new FlowLayout()); ?//因?yàn)镴Panel默認(rèn)布局方式為FlowLayout,所以可以注銷這段代碼.
this.add(jp1);
this.add(jp2);
this.add(jp3); ?//將三塊面板添加到登陸框上面
//設(shè)置顯示
this.setSize(300, 200);
//this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setTitle("登陸");
}
public static void main(String[] args){
new denglu();
}
}
拓展內(nèi)容
java swing包
Swing 是一個(gè)為Java設(shè)計(jì)的GUI工具包。
Swing是JAVA基礎(chǔ)類的一部分。
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運(yùn)行,這一點(diǎn)不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認(rèn)的特有主題),然而不是真的使用原生平臺提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支持的任意面板。輕量級組件的缺點(diǎn)則是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺上采用統(tǒng)一的行為。
概念解析:
JFrame?– java的GUI程序的基本思路是以JFrame為基礎(chǔ),它是屏幕上window的對象,能夠最大化、最小化、關(guān)閉。
JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進(jìn)行嵌套,功能是對窗體中具有相同邏輯功能的組件進(jìn)行組合,是一種輕量級容器,可以加入到JFrame窗體中。。
JLabel?– JLabel 對象可以顯示文本、圖像或同時(shí)顯示二者??梢酝ㄟ^設(shè)置垂直和水平對齊方式,指定標(biāo)簽顯示區(qū)中標(biāo)簽內(nèi)容在何處對齊。默認(rèn)情況下,標(biāo)簽在其顯示區(qū)內(nèi)垂直居中對齊。默認(rèn)情況下,只顯示文本的標(biāo)簽是開始邊對齊;而只顯示圖像的標(biāo)簽則水平居中對齊。
JTextField?–一個(gè)輕量級組件,它允許編輯單行文本。
JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點(diǎn)創(chuàng)建密碼(密碼)
JButton?– JButton 類的實(shí)例。用于創(chuàng)建按鈕類似實(shí)例中的 "Login"。