
源代码链接:https://download.csdn.net/download/weixin_46840974/12546310
当你的同学还在DOS界面苦心挣扎的时候,脱颖而出的做法就是让你的程序“可视化”。
那到底要用到来实现?
就我个人而言,如果要完成一个可视化窗口,那么就需要寻找一个简单的窗体实现的代码借此学习。因此我找到了这个网站(https://segmentfault.com/a/1190000009308776)并学习。
那么我们可以得到这样一个思路:想要完成一个大项目,那么就需要懂得如何学习每个小功能。
以下就是我所用到的一些网址整理,免去大家花费时间。希望对大家有帮助。
创建表格JTable(用来输出学生信息):
https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
替换左上角图标:
https://blog.csdn.net/qxhly/article/details/71541248
登录界面的文字(JTable)、填空格(JTextField)、按钮功能(JButton):
http://c.biancheng.net/view/1206.html(swing功能首页,具体功能可以在左栏找)
https://www.cnblogs.com/biehongli/p/5751149.html此外还有我所用到但并不是很重要的小功能:
关于JTable所用到的Objcet的一些问题:
https://bbs.csdn.net/topics/350210032
通过JButton关闭应用程序:
https://blog.csdn.net/oojustin/article/details/84294603
限制文本域输写:(防止暴力破解密码)
https://zhidao.baidu.com/question/936778205491188492.html
更改并美化JButton:
https://blog.csdn.net/pinkriverside/article/details/71104575
将窗体置顶:
https://blog.csdn.net/friendan/article/details/7036394
删除窗体:
https://blog.csdn.net/sky15737/article/details/50850315
同一个类下创建两个窗口:
https://blog.csdn.net/zhangzhikang_zzk/article/details/51416878同时在我自学的过程中也遇到了许多问题:
读取学生时的编码问题:
https://blog.csdn.net/zhu1371884551/article/details/103713306?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
总结下来上面的三个功能应该是首要功能,这样就可一实现一个登陆界面
@[TOC]登录界面的实现
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Random;
public class window {
public static void main(String[] args) {
new TestDemo("学生管理系统");
}
}
class TestDemo extends JFrame {
private final String userName = "123";
private final String passWord = "123";
private int windowWidth;
private int windowHeight;
private int screenSizeWidth;
private int screenSizeHeight;
public TestDemo(String title) {
super(title);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(256,300);
this.setLayout(null);
this.setResizable(false);
setWindow();
this.setVisible(true);
}
public void setWindow() {
//ImageIcon icon = new ImageIcon("logo.png");
//this.setIconImage(icon.getImage());
ImageIcon icon = new ImageIcon("pic\\logo.png");
this.setIconImage(icon.getImage());
Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
screenSizeWidth = (int)screenSize.getWidth();
screenSizeHeight= (int)screenSize.getHeight();
windowWidth = this.getWidth();
windowHeight= this.getHeight();
this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);
JLabel userName_label = new JLabel("姓名:");
JLabel passWord_label = new JLabel("密码:");
JLabel TipsInfo = new JLabel("请输入账号和密码:");
JLabel capStr = new JLabel("");
final JTextField user_field = new JTextField();
final JTextField capStr_field = new JTextField();
final JPasswordField pass_field = new JPasswordField();
JButton login_btn = new JButton("登录");
JButton regis_btn = new JButton("咨询");
TipsInfo.setBounds(15,0,300,50);
userName_label.setBounds(30, 50, 100, 50);
passWord_label.setBounds(30,80,100,50);
user_field.setBounds(30+50,50+15,125,25);
pass_field.setBounds(30+50,80+15,125,25);
login_btn.setBounds(125,180,80,40);
regis_btn.setBounds(25,180,80,40);
this.add(TipsInfo);
this.add(userName_label);
this.add(passWord_label);
this.add(user_field);
this.add(pass_field);
this.add(login_btn);
this.add(regis_btn);
regis_btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"如需帮助请联系作者"+"\n"+"LC","帮助",JOptionPane.QUESTION_MESSAGE);
}
});
login_btn.addActionListener(new ActionListener() {
int Hub;
int readHuB;
@Override
public void actionPerformed(ActionEvent e) {
//if(Hub == 0) --> ~~~~~~~此处验证码先行~~~~~~~
try {
if(user_field.getText().equals(userName) && pass_field.getText().equals(passWord)){
//此处调用下一个窗口并关闭当前窗口
setVisible(false);
systemMenu systemmenu = new systemMenu();
new Menu("主菜单");
//System.txt --> 0
Writer wr = new FileWriter("dataFiles\\System.txt");
wr.write(String.valueOf(Hub));
wr.close();
}else{
readTxt readHub = new readTxt();
readHuB = readHub.hub;
if (readHuB>50){
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
user_field.setEnabled(false); //阻止输入
}else {
Hub++;
File writeHub = new File("dataFiles\\System.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(writeHub));
out.write(String.valueOf(Hub));
out.flush();
out.close();
System.out.println(readHuB);
switch (Hub) {
case 0:
break;
case 1:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(3/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
case 2:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(2/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
case 3:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(1/3)", "Login", JOptionPane.ERROR_MESSAGE);
break;
default:
JOptionPane.showMessageDialog(null, "登陆失败,请检查账号和密码是否错误\n剩余机会:(0/3)请联系管理员", "Login", JOptionPane.ERROR_MESSAGE);
break;
}
user_field.setText("");
pass_field.setText("");
}
}
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
});
}
}@[TOC]登录后调用的功能主菜单(我们学校JAVA作业就是以下要求)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class systemMenu {
public static void main(String[] args) {
new Menu("主菜单");
}
}
class Menu extends JFrame{
private int windowWidth;
private int windowHeight;
private int screenSizeWidth;
private int screenSizeHeight;
public Menu(String title){
super(title);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(220,300);
//this.setLocation();
this.setLayout(null);
this.setResizable(false);
setMenu();
this.setVisible(true);
this.setAlwaysOnTop(true);
}
public void setMenu(){
ImageIcon icon = new ImageIcon("pic\\logo.png");
this.setIconImage(icon.getImage());
Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
screenSizeWidth = (int)screenSize.getWidth();
screenSizeHeight= (int)screenSize.getHeight();
windowWidth = this.getWidth();
windowHeight= this.getHeight();
this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);
JButton Menu1 = new JButton("1学生原始成绩输出");
JButton Menu2 = new JButton("2根据学号升序输出");
JButton Menu3 = new JButton("3根据均分降序输出");
JButton Menu4 = new JButton("4输出指定学院学生");
JButton Menu5 = new JButton("5搜索查询学生成绩");
JButton Menu6 = new JButton("6修改学生信息成绩");
JButton Menu7 = new JButton("退出");
Menu1.setBounds(10,10,182,30);
Menu2.setBounds(10,10+32,182,30);
Menu3.setBounds(10,42+32,182,30);
Menu4.setBounds(10,74+32,182,30);
Menu5.setBounds(10,106+32,182,30);
Menu6.setBounds(10,138+32,182,30);
Menu7.setBounds(10,180+32,182,30);
this.add(Menu1);
this.add(Menu2);
this.add(Menu3);
this.add(Menu4);
this.add(Menu5);
this.add(Menu6);
this.add(Menu7);
Menu1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
testOfJTable stuSystem = new testOfJTable("0");
stuSystem.createAndShowGUI("0");
}
});
Menu2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sortSystem sortByName = new sortSystem("stuId");
sortByName.createAndShowGUI("stuId");
}
});
Menu3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sortSystem sortByName = new sortSystem("avg");
sortByName.createAndShowGUI("avg");
}
});
Menu4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
collegeSystem collegesys = new collegeSystem();
new collegeSys("学院");
setVisible(false);
}
});
Menu5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
searchStudents stuSearch = new searchStudents();
new simpleSearch("搜索");
}
});
Menu6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
changeStudents changeInfo = new changeStudents();
new changeSearch("修改");
}
});
Menu7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}@[TOC]学生信息输出
值得注意的是,如果想通过JTable输出学生数据,需要把读取的信息变为Object(如下),这里我的代码太长了,大家可以下载我的project。我把我学习的源码写下来好了:(https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/SimpleTableDemoProject/src/components/SimpleTableDemo.java)
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class SimpleTableDemo extends JPanel {
private boolean DEBUG = false;
public SimpleTableDemo() {
super(new GridLayout(1,0));
//如果需要添加别的数据,就可以在这里多加一个元素
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian",
"在这里加~~"};
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
if (DEBUG) {
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
printDebugData(table);
}
});
}
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.添加滚轮
add(scrollPane);
}
private void printDebugData(JTable table) {
int numRows = table.getRowCount();
int numCols = table.getColumnCount();
javax.swing.table.TableModel model = table.getModel();
System.out.println("Value of data: ");
for (int i=0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + model.getValueAt(i, j));
}
System.out.println();
}
System.out.println("--------------------------");
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
SimpleTableDemo newContentPane = new SimpleTableDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
@[TOC]功能1:学生原始成绩输出
这个功能就好似照搬上面这个代码,但是如果照搬的话,岂不是要写100个data?所以一定要用到循环了。我是通过for来实现
for(int i = 0; i < 100; i++){
data0[i][0] = (Object)stus[i].stuId;
data0[i][1] = (Object)stus[i].stuName;
data0[i][2] = (Object)stus[i].sex;
data0[i][3] = (Object)stus[i].college;
data0[i][4] = (Object)stus[i].scores[0];
data0[i][5] = (Object)stus[i].scores[1];
data0[i][6] = (Object)stus[i].scores[2];
data0[i][7] = (Object)stus[i].scores[3];
data0[i][8] = (Object)stus[i].scores[4];
data0[i][9] = (Object)stus[i].scores[5];
data0[i][10] = (Object)stus[i].scores[6];
data0[i][11] = (Object)stus[i].scores[7];
data0[i][12] = (Object)stus[i].scores[8];
data0[i][13] = (Object)stus[i].scores[9];
data0[i][14] = (Object)stus[i].avg;
}
final JTable table = new JTable(data0, columnNames);这样就把String类型的学生转成Object以此输出(名单信息均为随机生成,不存在侵犯隐私的问题)
@[TOC]功能2:根据学号升序输出
@[TOC]功能3:根据均分降序输出
这两个功能的原理相似同时也非常好理解。通过对String类型时的学生信息进行冒泡排序,之后再将排完序的信息转给Object的data让其显示在JTable中。
i < 100;i++) {
for (int j = i + 1; j < 100; j++) {
if (stus[i].stuId.compareTo(stus[j].stuId)>0?true:false) {
stus2[i] = stus[i];
stus[i] = stus[j];
stus[j] = stus2[i];
}
}
}
for (int i = 0; i < 100; i++) {
data0[i][0] = (Object) stus[i].stuId;
data0[i][1] = (Object) stus[i].stuName;
data0[i][2] = (Object) stus[i].sex;
data0[i][3] = (Object) stus[i].college;
data0[i][4] = (Object) stus[i].scores[0];
data0[i][5] = (Object) stus[i].scores[1];
data0[i][6] = (Object) stus[i].scores[2];
data0[i][7] = (Object) stus[i].scores[3];
data0[i][8] = (Object) stus[i].scores[4];
data0[i][9] = (Object) stus[i].scores[5];
data0[i][10] = (Object) stus[i].scores[6];
data0[i][11] = (Object) stus[i].scores[7];
data0[i][12] = (Object) stus[i].scores[8];
data0[i][13] = (Object) stus[i].scores[9];
data0[i][14] = (Object) stus[i].avg;
}
final JTable table = new JTable(data0, columnNames);for(int i = 0 ;i < 100;i++) {
for (int j = i + 1; j < 100; j++) {
if (stus[i].avg < stus[j].avg) {
stus2[i] = stus[i];
stus[i] = stus[j];
stus[j] = stus2[i];
}
}
}
for (int i = 0; i < 100; i++) {
data0[i][0] = (Object) stus[i].stuId;
data0[i][1] = (Object) stus[i].stuName;
data0[i][2] = (Object) stus[i].sex;
data0[i][3] = (Object) stus[i].college;
data0[i][4] = (Object) stus[i].scores[0];
data0[i][5] = (Object) stus[i].scores[1];
data0[i][6] = (Object) stus[i].scores[2];
data0[i][7] = (Object) stus[i].scores[3];
data0[i][8] = (Object) stus[i].scores[4];
data0[i][9] = (Object) stus[i].scores[5];
data0[i][10] = (Object) stus[i].scores[6];
data0[i][11] = (Object) stus[i].scores[7];
data0[i][12] = (Object) stus[i].scores[8];
data0[i][13] = (Object) stus[i].scores[9];
data0[i][14] = (Object) stus[i].avg;
}
final JTable table = new JTable(data0, columnNames);@[TOC]功能4:输出指定学院学生

所用的主要方法是,通过JButton来调用其他方法(具体在testOfJTable.java和sortSystem.java中)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class systemMenu {
public static void main(String[] args) {
new Menu("主菜单");
}
}
class Menu extends JFrame{
private int windowWidth;
private int windowHeight;
private int screenSizeWidth;
private int screenSizeHeight;
public Menu(String title){
super(title);
super.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(220,300);
//this.setLocation();
this.setLayout(null);
this.setResizable(false);
setMenu();
this.setVisible(true);
this.setAlwaysOnTop(true);
}
public void setMenu(){
ImageIcon icon = new ImageIcon("pic\\logo.png");
this.setIconImage(icon.getImage());
Dimension screenSize = getToolkit().getDefaultToolkit().getScreenSize();
screenSizeWidth = (int)screenSize.getWidth();
screenSizeHeight= (int)screenSize.getHeight();
windowWidth = this.getWidth();
windowHeight= this.getHeight();
this.setBounds((int)(screenSizeWidth-windowWidth)/2, (int)(screenSizeHeight-windowHeight)/2,windowWidth,windowHeight);
JButton Menu1 = new JButton("1学生原始成绩输出");
JButton Menu2 = new JButton("2根据学号升序输出");
JButton Menu3 = new JButton("3根据均分降序输出");
JButton Menu4 = new JButton("4输出指定学院学生");
JButton Menu5 = new JButton("5搜索查询学生成绩");
JButton Menu6 = new JButton("6修改学生信息成绩");
JButton Menu7 = new JButton("退出");
Menu1.setBounds(10,10,182,30);
Menu2.setBounds(10,10+32,182,30);
Menu3.setBounds(10,42+32,182,30);
Menu4.setBounds(10,74+32,182,30);
Menu5.setBounds(10,106+32,182,30);
Menu6.setBounds(10,138+32,182,30);
Menu7.setBounds(10,180+32,182,30);
this.add(Menu1);
this.add(Menu2);
this.add(Menu3);
this.add(Menu4);
this.add(Menu5);
this.add(Menu6);
this.add(Menu7);
Menu1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
testOfJTable stuSystem = new testOfJTable("0");
stuSystem.createAndShowGUI("0");
}
});
Menu2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sortSystem sortByName = new sortSystem("stuId");
sortByName.createAndShowGUI("stuId");
}
});
Menu3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sortSystem sortByName = new sortSystem("avg");
sortByName.createAndShowGUI("avg");
}
});
Menu4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
collegeSystem collegesys = new collegeSystem();
new collegeSys("学院");
setVisible(false);
}
});
Menu5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
searchStudents stuSearch = new searchStudents();
new simpleSearch("搜索");
}
});
Menu6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
changeStudents changeInfo = new changeStudents();
new changeSearch("修改");
}
});
Menu7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}
@[TOC]功能5:搜索查询学生成绩
该功能主要是在testOfJTable中进行比较,然后再通过Object[1][15]来输出
可以同时根据学号或姓名搜索学生信息:
(这里 当学生姓名错误以后 会有个小BUG)
核心代码(testOfJTable中):
//具体是通过比较学号和姓名来完成的compereTo()
int i=0;
int ii=0;
Object[][] dataStu = new Object[1][15];
searchStudents searchStu_field = new searchStudents();
System.out.println(searchStu_field);
String testOfthis;
testOfthis = Menu; //可算成功了,这里需要一个String变量当作强梁进行过渡
for(int j=0;j<100;j++){
if (stus[j].stuName.equals(testOfthis)){//stus[j].stuName.equals(Menu)==true
dataStu[i][0] = (Object)stus[j].stuId;
dataStu[i][1] = (Object)stus[j].stuName;
dataStu[i][2] = (Object)stus[j].sex;
dataStu[i][3] = (Object)stus[j].college;
dataStu[i][4] = (Object)stus[j].scores[0];
dataStu[i][5] = (Object)stus[j].scores[1];
dataStu[i][6] = (Object)stus[j].scores[2];
dataStu[i][7] = (Object)stus[j].scores[3];
dataStu[i][8] = (Object)stus[j].scores[4];
dataStu[i][9] = (Object)stus[j].scores[5];
dataStu[i][10] = (Object)stus[j].scores[6];
dataStu[i][11] = (Object)stus[j].scores[7];
dataStu[i][12] = (Object)stus[j].scores[8];
dataStu[i][13] = (Object)stus[j].scores[9];
dataStu[i][14] = (Object)stus[j].avg;
i++;
}
if (stus[j].stuId.equals(testOfthis)){//stus[j].stuName.equals(Menu)==true
dataStu[i][0] = (Object)stus[j].stuId;
dataStu[i][1] = (Object)stus[j].stuName;
dataStu[i][2] = (Object)stus[j].sex;
dataStu[i][3] = (Object)stus[j].college;
dataStu[i][4] = (Object)stus[j].scores[0];
dataStu[i][5] = (Object)stus[j].scores[1];
dataStu[i][6] = (Object)stus[j].scores[2];
dataStu[i][7] = (Object)stus[j].scores[3];
dataStu[i][8] = (Object)stus[j].scores[4];
dataStu[i][9] = (Object)stus[j].scores[5];
dataStu[i][10] = (Object)stus[j].scores[6];
dataStu[i][11] = (Object)stus[j].scores[7];
dataStu[i][12] = (Object)stus[j].scores[8];
dataStu[i][13] = (Object)stus[j].scores[9];
dataStu[i][14] = (Object)stus[j].avg;
ii++;
}
}
if(i == 0 || ii==0){
JOptionPane.showMessageDialog(null,"请输入正确的学生姓名","姓名输入错误",JOptionPane.PLAIN_MESSAGE);
}else{
JTable table = new JTable(dataStu, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(1250,17));
table.setFillsViewportHeight(true);
rollPane = new JScrollPane(table);
add(scrollPane);
}
@[TOC]功能6:修改学生信息成绩
这里我先是通过功能5的调用,搜索出了学生以后用以预览原成绩,再通过新建另一个窗口用JComboBox进行修改。
相较于上面提到的相比,唯一多的代码在CreateAndShowGUI()中:
public void createAndShowGUI(String searchPerson, Boolean bool){
JFrame infoFrame = new JFrame("学生信息");
ImageIcon icon = new ImageIcon("pic\\logo.png");
infoFrame.setIconImage(icon.getImage());
testChange newContentPane = new testChange(searchPerson,true);
newContentPane.setOpaque(false);
infoFrame.setContentPane(newContentPane);
infoFrame.setBounds(300,250,0,0);
infoFrame.pack();
infoFrame.setVisible(bool);
infoFrame.setAlwaysOnTop(true);
JComboBox oldScore = new JComboBox();
oldScore.setBounds(70,15,80,25);
JTextField newScore = new JTextField();
//newScore.setEditable(true);
newScore.setBounds(70,50,80,25);
JButton changeScore = new JButton("修改");
changeScore.setBounds(10,100,60,50);
JLabel Old = new JLabel("旧成绩");
JLabel New = new JLabel("新成绩");
Old.setBounds(15,10,50,30);
New.setBounds(15,45,50,30);
JFrame cerFrame = new JFrame("窗体");
cerFrame.setIconImage(icon.getImage());
JButton certain = new JButton("确认");
certain.setBounds(90,100,60,50);
cerFrame.setUndecorated(true);
cerFrame.setLayout(null);
cerFrame.setBounds(300,500,166,180);
cerFrame.add(certain);
cerFrame.add(Old);
cerFrame.add(New);
cerFrame.setVisible(bool);
cerFrame.setAlwaysOnTop(true);
String[] weekDays = {
"课程1",
"课程2",
"课程3",
"课程4",
"课程5",
"课程6",
"课程7",
"课程8",
"课程9",
"课程10"
};
for (int i = 0;i < 10;i++){
oldScore.addItem(weekDays[count++]);
}
cerFrame.add(oldScore);
cerFrame.add(newScore);
cerFrame.add(changeScore);
oldScore.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(oldScore.getSelectedItem()); //测试用
}
});
changeScore.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if( Integer.parseInt(newScore.getText()) >100 || Integer.parseInt(newScore.getText()) <0){
JOptionPane.showMessageDialog(null,"分数范围错误!\n(0-100)");
}else{
modifyScores(String.valueOf(oldScore.getSelectedItem()),newScore.getText(),stuID);
System.out.println(String.valueOf(oldScore.getSelectedItem()));
wFile(modifyScores(String.valueOf(oldScore.getSelectedItem()),newScore.getText(),stuID));
}
}
});
certain.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
infoFrame.setVisible(false);
cerFrame.setVisible(false);
}
});
count = 0;
}鄙人自学粗陋,定有不足之处还望谅解并指出。如果哪里有不明白的地方也欢迎讨论,洗耳恭听。虽然篇幅有些长,鄙人可是花了几天时间慢慢写下,也非常佩服你能看到这儿~