将图形用户界面转换为Java代码

将图形用户界面转换为Java代码,java,swing,user-interface,Java,Swing,User Interface,因此,我设法使程序工作,但我的教授要求它以GUI格式完成。问题是,我已经尝试使用GUI补充来制作我所拥有的任何东西,但我对它的工作原理还相当陌生。我在这里浏览了很多网站和问题,但我不太熟悉它的工作原理。我担心我会弄乱我的代码,所以我只想知道如何将GUI实现到这一点上 我试着让一些文本出现在一个窗格中,但我不知道当输入-1作为输入的指示时如何与GUI结合,以及在string course=keyboard.next()上使用这个概念 简言之,我对此一无所知 需要注意的一些重要事项[没有GUI混乱

因此,我设法使程序工作,但我的教授要求它以GUI格式完成。问题是,我已经尝试使用GUI补充来制作我所拥有的任何东西,但我对它的工作原理还相当陌生。我在这里浏览了很多网站和问题,但我不太熟悉它的工作原理。我担心我会弄乱我的代码,所以我只想知道如何将GUI实现到这一点上

我试着让一些文本出现在一个窗格中,但我不知道当输入-1作为输入的指示时如何与GUI结合,以及在string course=keyboard.next()上使用这个概念


简言之,我对此一无所知

需要注意的一些重要事项[没有GUI混乱的代码]

import javax.swing.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;

public static void main (String [] args)
{

    HashMap <Integer, ArrayList <String>> students = new HashMap <>();

    System.out.println ("This program correlates ID with student courses\n");
    int currentID;
    boolean editing;

    while (true) {
        System.out.println ("Please enter Student ID: \n(Then enter a -1 when inputs are done)");
        Scanner keyboard = new Scanner (System.in);
        int ID = keyboard.nextInt();

        if(ID == -1) {
            break;
        }

        students.put (currentID = ID, new ArrayList<>());
        editing = true;

        System.out.println("Enter courses: \n(Once you're done, type \'next\')");

        while (editing) {
            String course = keyboard.next();
            if(course.equalsIgnoreCase("next")) {
                editing = false;
            } else {
                students.get(currentID).add(course);
            }
        }
    }

    System.out.println ("Final List: ");
    students.forEach((key, value) -> {
        System.out.println("Student " + key + ". Courses: " + Arrays.toString(value.toArray()));
    });
}
import javax.swing.*;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.HashMap;
导入java.util.Scanner;
导入java.io.FileNotFoundException;
导入java.io.File;
公共静态void main(字符串[]args)
{
HashMap students=newhashmap();
System.out.println(“此程序将ID与学生课程相关联\n”);
int currentID;
布尔编辑;
while(true){
System.out.println(“请输入学生ID:\n(输入完成后输入-1)”;
扫描仪键盘=新扫描仪(System.in);
int ID=keyboard.nextInt();
如果(ID==-1){
打破
}
students.put(currentID=ID,new ArrayList());
编辑=真;
System.out.println(“输入课程:\n(完成后,键入“下一步”);
同时(编辑){
字符串课程=键盘。下一步();
if(课程同等信号案例(“下一个”)){
编辑=假;
}否则{
学生.get(currentID).add(课程);
}
}
}
System.out.println(“最终列表:”);
学生。forEach((键,值)->{
System.out.println(“学生”+key+”。课程:“+Arrays.toString(value.toArray()));
});
}

预期的计划信息:

SWING API非常大,如果在没有经验的情况下试图手工编写GUI代码,则很难知道从哪里开始。我建议您下载NetBeans,将代码放入NetBeans项目,然后使用内置的Swing设计器以图形方式设计GUI并生成代码


您会发现,当您双击设计器中的某个控件时,它将生成一个回调方法,您只需填写该方法即可响应用户的输入事件。

我将从开始。GUI和控制台程序通过不同的模式工作,因此您无法将当前程序转换为GUI,而是转换功能/需求。我认为在查看此示例时,情况就是这样。谢谢你的超链接,我很感激!:)很抱歉,我对这个有点陌生。一个简单的例子正在研究中。“我担心我会弄乱我的代码”:不必担心。答:在进行重大更改(或使用IDE历史记录或GIT解决方案)之前,请始终保留备份。我建议制作一个新的小程序,只是为了学习如何获得用户的输入。稍后看看如何集成这两个程序。有没有办法用IntelliJ做到这一点?@R.Ahmed IntelliJ有一个GUI构建器插件。我没有使用过它,但我可以想象它是一个拖放式的构建器,比如Eclipse的WindowBuilder或SceneBuilder插件,我不会为它更改IDE