Java week9.2
2025.05.01 Thu AM 10:04 ・ 72Minutes 34seconds
ZHANG YIWEN
Java 第 9 周 2.2 2025.05.01 周四 上午 10:04 ・ 72 分钟 34 秒 张义文
Attendees 1 00:59
저장하고 먼저 우리 컴파일을 처리하기 위해서 우리 코드를 좀 작성을 해야 돼요.
먼저 프로젝트를 한번 생성을 같이 한번 해보도록 할게요.
저도 다 같이 한번 해볼게요. 먼저 파일에 가서 새로운 프로젝트를 만들어보겠습니다.
이름을 스윙이니까 sw로 좀 통 마음대로 하세요.
ex로 하든지 ex로 해서 오늘 날짜로 한번 작성해 볼게요.
ex 0501 그다음에 이
参会人员 1 00:59 保存并首先处理我们的编译,我们需要写一些代码。首先,让我们一起创建一个项目。我也会和大家一起尝试。首先,我将前往文件并创建一个新项目。由于是 Swing,所以名称可以随意取,如 ex 或以今天的日期命名。ex 0501,然后接下来是
Attendees 1 01:41
그다음 코스에 클래스를 생성하고 이름을 DX 메인으로 해볼게요.
DX 메인 w 설정하고 메인에서 보면 우리 이제 자바를 자바 스윙을 사용하기 위해서 인폴트 해야 된다고 했는데 인폴트 어떤 거 해야 되나요?
자바 스윙의 경우는 자바 x 점 스윙 점 별표를 하시면 모든 것을 가지고 올 수 있고 자바 스윙이 가지고 있는 내용들 중에서 오늘은 익스텐즈 제 프레임을 할 거예요.
스윙은 다 제가 붙는다고 했고 대문자로 시작을 하셔야 되고 반드시 손문자 대문자 다 구별을 하기 때문에 jf로 시작해서 프레임을 작성을 해 주시고 내가 ex 메인이라는 클래스를 가지고 있어요.
얘 생성자 한번 생성할 건데 생성자 뭐로 시작할까요?
생성 접근자 퍼블릭으로 할게요. 퍼블릭 생성자 생성자의 이름은 ex 메일 괄호 있어요.
없어요. 있어요. 클래스는 괄호가 없고 생성자는 괄호가 있어요.
그런데 j2 프레임을 설정할 수 있는 가장 기본 메소드 셋 사이즈 한번 해볼게요.
学员 1 01:41 接下来我们将在课程中创建一个类,并将其命名为 DX 主类。在 DX 主类中,我们现在要使用 Java Swing,所以需要导入。那么需要导入哪些内容呢?对于 Java Swing,可以使用 java.javax.swing.*,这样就可以导入所有内容。在今天的 Swing 内容中,我们将扩展 JFrame。Swing 中所有类都以 J 开头,并且要用大写字母开始,因为 Java 区分大小写。我们将从 JF 开始创建框架,我有一个名为 Ex Main 的类。我将创建一个构造函数,构造函数从什么开始呢?我将使用 public 访问修饰符。公共构造函数,构造函数名为 Ex Main,有括号吗?没有。有。类没有括号,而构造函数有括号。现在我们将尝试使用 JFrame 的最基本方法 setSize。
Attendees 1 03:21
이거는 저번 시간에 했던 내용이고 여기에는 안 들어 있지만 어디에 들어 있어요?
j2 프레임의 속성의 메소드가 들어 있어요. 셋 사이즈하고 셋 타이틀 기본적인 거 두 개만 먼저 넣어볼게요.
헬로우라는 이름으로 넣고 그다음에 화면에 보여주는 걸 이 비저브를 하지 않으면 아무리 만들어도 보이지 않아요.
그래서 이렇게 만들어 놓고 이 만들어 놓은 생성자 아무리 클래스를 만들어도 호출하지 않으면 의미가 없습니다.
그럼 한번 호출을 해볼게요. 만들어야 되니까 먼저 인스턴스 변수 ex를 만들어 놓고 뉴로 생성을 하는데 객체 생성을 할 때는 생성자 이름인 괄호가 필요합니다.
이렇게 해서 실행을 하는데 아마 컴파일이 안 될 거예요.
지금 저번 주에 이렇게 해서 문제가 됐었는데 이거는 이제 자바 스 JDK 문제가 아니라 여기서는 설정을 몇 개를 해줘야 된다고 하네요.
우리 윈도우즈에 같이 여기서 좀 같이 하셔야 됩니다.
일단 여기까지 작성하시고 1분 정도 시간 드릴게요.
준비가 되시면 바로 할게요.
学员 1 03:21 这是上节课的内容,但它不在这里,而是在哪里?它在 JFrame 的属性和方法中。我将先添加 setSize 和 setTitle 这两个基本方法。我将标题设为"Hello",然后使用 setVisible 显示屏幕,否则无论创建什么都不会显示。无论创建多少类,如果不调用,都没有意义。那么让我们来调用它。首先创建一个实例变量 Ex,然后使用 new 创建对象,创建对象时需要构造函数名的括号。这样执行,但可能无法编译。这是上周遇到的问题,现在不是 JDK 的问题,而是需要在这里进行一些设置。我们需要在 Windows 上一起完成。先写到这里,给大家 1 分钟时间。准备好了就立即开始。
Attendees 1 04:37
제가 여기 이 내용은 학습 자료실에 올려놨어요. 지금부터 같이 할게요.
윈도우에 가셔서 본인 컴퓨터에서는 문제가 안 될 거예요.
근데 여기 실험실에서 보니까 아니면 실습실에서 다른 데서도 혹시 이런 문제가 있으면 활용하시면 됩니다.
윈도우즈에서 윈도우에서 프리퍼런스를 누르세요.
프리퍼런스를 누르시고 여기 찾기에서 타입 필터를 작성하세요.
타입 필터 타입 필터를 누르면 자동으로 검색을 해 줍니다.
여기서 중요한 게 뭐냐면 자바 awt하고 자바 awt 리스트를 체크가 해제가 되어야 한다고 합니다.
이게 스윙을 쓰려면 이거 awt가 해제가 되어야 스윙이 되기 때문에 이거 체크를 해제를 해 주시고 어플라이 n 클로즈를 하시면 됩니다.
됐어요. 두 번째 뭐냐 하면 두 번째는 모듈 인포에서 한 문구를 추가를 하셔야 되는데 우리가 데스크탑에 접근을 할 수 있도록 요구를 해야 돼요.
리카이얼즈 자바 1 이거는 컴퓨터의 데스크탑을 얘기하는 게 아니에요.
与会者 1 04:37 我已经将这些内容上传到学习资料库。现在我们一起开始。在 Windows 上,在你自己的电脑上不会有问题。但是在这个实验室或实习室,如果出现类似问题,可以使用这个方法。在 Windows 中点击首选项。点击首选项,然后在搜索中编写类型过滤器。点击类型过滤器,它会自动进行搜索。重要的是,Java AWT 和 Java AWT 列表应该被取消勾选。如果要使用 Swing,必须取消 AWT 的勾选,然后应用并关闭。
Attendees 1 06:00
여기에서 데스크 탑을 어쨌든 자바에 해당되는 데스크 탑을 추가를 해 주시고 그다음에 컴파일을 하시면 화면이 보일 거예요.
이렇게 요거 내용은 내용은 제가 학습 자료실에 올려놨어요.
그래서 이걸 잘 따라서 얼마 어렵지 않으니까 따라서 한번 해보시고 컴파이까지 잘 되면 그때 이제 준비가 되면 수업을 할게요.
与会者 1 06:00 在这里,无论如何都要添加与 Java 相关的桌面,然后编译,屏幕就会显示出来。这些内容我已经上传到学习资料库。所以请按照这个步骤,并不难,编译成功后,我们就可以开始上课了。
Attendees 1 06:35
모르겠으면 학습 자료실 한번 확인해 주세요.
如果不知道,请查看一下学习资料室。
Attendees 1 06:43
왜 뭐 문제 있어 질문 잘 안 돼 한 번씩 다 해보고 컴파일 되면 문제가 없고 안 되는 사람은 손 들어주세요 하는데 안 돼
参会者 1 06:43 为什么有问题?问题没有得到很好的解答。我们让每个人都尝试一下,如果编译通过就没问题,如果有人编译不成功请举手。
Attendees 1 06:56
그렇게 되면 돼요. 그 창만 뜨는 거 업데이트 했어 저번에 모델이 새로 다시 만들어 이게 지금 모듈이 여러 개가 있어서 처음부터 다시 만들려고 그거는 닫는 거 이거 화면 잡기 지금 없는 거 지금 없어도 상관은 없는데 혹시 몰라서 내가 넣으라고 했는데 그거가 문제가 아니라 컴파일의 문제는 이거라고 얘가 실행을 할 때 이 화면에 보이면 요 x를 닫는 게 요게에 먹히도록 하는 건데 지금 여기 세팅에서는 그냥 먹히네요.
냅둬도 되고 상관없어요. 엑스표 닫기예요. 근데 걔를 넣으면 원래는 어떤 컴파일러에서는 스프 안 넣으면 계속 남아 있는데 얘는 그냥 다치네요.
그래서 지금 이거를 안 넣은 거고 다 잘 됐어요. 안 된 사람 좀 봐드릴게요.
如果是那样就可以了。我已经更新了只显示那个窗口。上次模型重新制作,现在有多个模块,所以想从头开始重新制作。关闭这个窗口,现在没有这个画面也没关系,但我还是让他们加上了。问题不在于这个,而是编译的问题。当他执行时,如果在这个画面上显示,让这个 X 关闭按钮生效。现在在这个设置中是可以直接关闭的。可以不管它。这是关闭 X 按钮。但是如果不加入某些编译器,它会一直保留,而这个就直接关闭了。所以现在没有加入这个,一切都很顺利。我来给没成功的人看看。
Attendees 1 08:22
화이트 그것도 써야 돼요.
白色,那个也要使用。
Attendees 1 08:30
아니 띄워야지 이래서 해지 마지막 거 해지
参会者 1 08:30 不行,应该显示出来,不要这样做,这是最后一个
Attendees 1 08:42
다시 나 이제 됐을까요? 좀 설치했는데 혜지 여기 내가 설치해놔서 아마 됐다.
参会者 1 08:42 现在可以了吗?我已经安装了一些,可能已经完成了。
Attendees 1 09:05
요거가 해제가 돼야 돼. 얘가 그리고 어플라이 하면 되고 여기 모듈에서 이거 추가해줘.
与会者 1 09:05 这个需要解除。然后应用它,并在这个模块中添加它。
Attendees 1 09:20
아 이거 원래 원래 있는데
与会者 1 09:20 啊,这个本来就已经存在了。
Attendees 2 10:23
이거 광고 나와 있어요.
参加者 2 10:23 这里已经出现广告了。
Attendees 1 10:36
근데 왜 관객이 안 보이지 가
参加者 1 10:36 但是为什么观众看不到呢?
Attendees 1 10:44
수 있죠? 수익
与会者 1 10:44 可以吗?收益
Attendees 1 10:50
고기들이 왜 안 보이지 원래 있는데 그렇지 않아
与会者 1 10:50 为什么看不到肉?本来就在这里,不是吗?
Attendees 1 10:59
상담은 하는데 잠깐만 프로퍼티 타입 어플라인하고 모듈 모듈 인거 빼고 그러면 되는데
与会者 1 10:59 正在咨询,但是只需要应用属性类型并删除模块,就可以了
Attendees 1 11:38
이상하네. 자바 엑스 자바 엑스 스 그거였던 건데 안 되는데 자 여기 다시 써보자.
자바 x 수익이 다시 뜯어야 어 익스탠지 안 했다. 체크가 안 돼 있었구나.
자바 프로젝트는 있는데 체크하는
与会者 1 11:38 很奇怪。是 Java X Java X S,但是不行。让我们重新写一下。Java X 收益需要重新检查,哦,没有勾选。Java 项目存在,但是没有勾选
Attendees 1 12:23
전부 해제 이제 된 것 같아. 어느 정도 표준화 됐어?
参会人员 1 12:23 现在全部解除了,看起来已经差不多了。已经有一定程度的标准化了吗?
Attendees 1 12:36
여기 있는 거 이거 왜 뛰었어? 왜 뛰었어? 일부러 그리고 철자 틀렸는데
参会人员 1 12:36 这里的东西为什么跳过了?为什么跳过了?故意的,而且拼写还错了
Attendees 1 12:59
그리고 마이 프레임 얘 이름이 ex로 돼 있는데 얘는 마이 돼 있는데 이름이 다른데 이름을 똑같이 써줘야 돼.
이거는 기본이야 표준 이게 기본이야 여기 이름하고 여기 이름이 다르면 안 돼.
그 컨트롤 c 해 봐. 컨트롤 c 그리고 얘도 이름이 똑같아 컨트롤 보 얘도 이름이 똑같아 컨트롤 얘도 이름이 똑같아 요거 클래스 이름 얘가 생성자 이 클래스 이름 새로 불러오는 얘는 뭐야 메인이 뭐야 이거 뭐야 붙여왔구나 됐어 이제 이해했어.
여기 괄호 하나만 잡아줘 괄호 여기 여기 시작한 괄호가 없어 여기 중괄호 닫아줘.
그래 그래 그렇지 이제 다 된 것 같다. 이제 시작해 봅시다.
이제 준비가 됐어요. 실행을 한번 해볼게요. 이제부터 스윙은 되게 쉬워요.
스윙은 어려운 거 없고 이제 모양 만들고 하는 거라서 우리 껍데기 만드는 거 지금 셋 타이틀하고 셋 사이즈 셋 비저블은 뭐냐면 타이틀 맨 위에 제목 라인을 우리가 이제 윈도우 창을 하나 만드는 거예요.
参会者 1 12:59 然后我的框架,它的名字是 ex,但这里的名字不一样,你需要把名字写得一样。这是基本的,这是标准,这是基本的。这里的名字和这里的名字不能不同。试试控制 C,控制 C,然后它的名字也一样,控制 B,它的名字也一样,控制,它的名字也一样。这是类名,这是构造函数,这个类名,新调用的是什么,主要是什么,这是什么,你粘贴过来了,好了,现在我明白了。在这里抓住一个括号,括号在这里,这里开始的括号没有,在这里关闭大括号。是的,是的,现在好像都完成了。现在开始吧。现在准备好了。我将执行一下。现在开始 swing 变得非常简单。swing 没有什么难的,现在就是创建形状,我们正在制作外壳,现在设置标题和大小,可见是什么,就是标题栏,我们现在正在创建一个窗口。
Attendees 1 14:28
그래서 윈도우 창에 제목을 만들고 사이즈는 가로 세로 300 셀로 만 조그마한 사이즈로 나왔고 그리고 셋 비저브를 출루를 하셔야지 화면이 우리 윈도우에서 제일 맨 앞으로 해서 출력이 됩니다.
그러면 이렇게 생성자를 통해서 만들어졌고 이번에는 마이 프레임에 여기 설명이 없으니까 다른 속성들을 이제 조금씩 더 추가를 해볼 건데 여기서는 오늘은 콘텐츠 펜을 먼저 처리를 했네요.
콘텐츠 펜이라는 거는 이제 컨테이너를 생성을 먼저 해 주셔야 되는데 프레임 겟 점 콘텐츠 페인을 호출을 하시면 돼요.
이 제 프레임 안에 다 들어 있는 메소드들 중에서 하나예요.
그래서 그거를 호출을 해서 버튼을 한번 만들어보죠.
그러면 버튼을 만드는 방법을 이건 타이틀이고 여기 맨 첫 줄에 우리 마지막 시간에 요 세 디폴트 클로즈 오퍼레이션 해서 클로즈를 했는데 왼쪽 오른쪽 맨 위에 보면 x표 버튼이 있어요.
근데 컴파일러가 지금은 이제 향상이 돼서 전에는 이 엑스표 동작을 안 했습니다.
参会者 1 14:28 所以在窗口创建标题,大小为 300 乘 300 的小窗口,然后设置可见,这样就会在我们的窗口中最前面输出。这是通过构造函数创建的,这次在我的框架中没有说明,所以我将逐步添加其他属性,今天我们先处理了内容面板。内容面板是指首先要创建容器,可以通过调用框架的 get 点内容面板来完成。这是框架中的方法之一。然后让我们创建一个按钮。这是标题,在最后一行,我们上次使用了默认关闭操作来关闭,在左侧、右侧和顶部,你可以看到 x 按钮。但现在编译器已经得到了改进,以前这个 x 按钮是不起作用的。
Attendees 1 15:50
그래서 요 x표 동작을 하게 하기 위해서 s 디폴트 클로즈 오퍼레이션을 반드시 해줬어야 되는데 지금은 이 클립스가 많이 버전업이 되면서 요 x가 그냥 안 눌러도 자동으로 지워져요.
전에는 그냥 이 오퍼레이션이 없으면 계속 화면에 떠 있어요.
여기는 그 레드가 스레드가 중지되지 않고 프로그램을 종료할 때 같이 없어지는 그런 단점이 있었거든요.
근데 이거는 이제 기본적으로 넣어주셔야 되는 거예요.
클로즈 하기 위해서 그다음에 그러면 또 버튼을 하나 만들어 볼 건데 버튼의 위치가 컨텍 우리 지금 저번 시간에 다 이 트리에 대한 설명은 간단하게 드렸어요.
예를 들어서 이렇게 그래서 컨테이너 안에 컴포넌트 안에 그다음에 그 컴포넌트 안에서 버튼이 버튼이 여기서 또 한 번을 다 여기 버튼이 존재를 하는데 어쨌든 그것을 사용하기 위해 우리가 요 몇 가지의 단계를 거쳐야 합니다.
그래서 컨테이너라는 클래스 명을 호출해서 이름은 그 안에 메소드 중에서 겟 콘텐츠 페인을 사용해 펜을 사용하셔야 돼요.
与会者 1 15:50 所以为了使这个 X 标记动作生效,必须设置默认的关闭操作。现在,随着 Eclipse 的多次版本升级,这个 X 已经可以自动关闭,不需要点击。以前,如果没有这个操作,窗口会一直停留在屏幕上。在这里,红色线程不会停止,程序终止时会一起消失,这是一个缺点。但现在,这是必须要添加的基本内容。为了关闭,然后我们将创建一个按钮。按钮的位置在上下文中,我们已经在上次课程中简单地介绍了这个树。例如,这样,在容器中有组件,然后在组件中有按钮,按钮在这里存在。无论如何,为了使用它,我们需要经过几个步骤。所以要调用容器类名,并使用其中的 getContentPane 方法。
Attendees 1 17:06
콘텐츠 펜을 사용하셔서 호출을 하신 후에 그 콘텐츠 펜의 이름을 지금 콘텐츠 펜이라고 지었잖아요.
그 값에 세팅할 수 있는 여러 개의 변수가 자동으로 이제 상속됐기 때문에 점을 찍으면 상속된 내용들을 호출할 수 있는 메소드들이 쭉 나와요.
필드랑 메소드랑 호출해서 사용할 수 있는 이제 거기도 다 퍼블릭으로 선언되어 있으니까 호출할 수 있겠죠.
그럼 내부에 사용되어 있는 걸 다 외울 필요가 없고 점을 찍어보고 제가 원하는 걸 유치를 해서 이름을 보고 유치를 해서 호출을 하시면 됩니다.
그래서 콘텐트 펜에 이제 백그라운드 딱 보면은 백그라운드가 칼라겠구나 배경색이겠구나라고 유추를 하셔야 합니다.
그래서 칼라는 칼라 지정은 다 똑같아요. 그냥 칼라 점 하시면 거기에 다 나와요.
그래서 칼라를 지정하는 곳에는 칼라를 다 그냥 바로 쓸 수가 있습니다.
与会者 1 17:06 使用并调用 ContentPane 后,你已经给它命名为 ContentPane。由于已自动继承了多个可以设置的变量,点击后会出现继承的方法列表。可以调用和使用字段和方法,因为它们都声明为公共的。你不需要记住内部使用的所有内容,只需通过点击来查看你想要的内容并调用它。所以当你看到 ContentPane 的背景时,可以推断出这是颜色,是背景色。颜色的指定都是一样的,只需点击 Color 就可以看到。在指定颜色的地方,可以直接使用颜色。
Attendees 1 18:02
컬러 오렌지 이거는 오렌지 색깔을 지정한 거고 백그라운드 설정할 수 있고 레이아웃은 레이아웃은 뭐냐면 지금 셋 레이아웃은 좀 더 이따가 작성 이제 한 다음 예제 나올 건데 레이아웃은 뭐야 영역을 구분하는 거예요.
구획을 나눠서 근데 이거는 지금은 이제 설명 좀 이따 할 거니까 그냥 이거 한번 따라와서 한번 써보시고 그다음에 샘팬 펜의 에드를 하실 건데 버튼이 이미 존재를 하기 때문에 제 프레임 익스펜즈를 하게 되면 성립되면 그 안에 사용되어지는 제 버튼을 사용할 수가 있어요.
그래서 뉴 버튼을 제 버튼을 하셔서 여기에는 이제 기본 디폴트 값 얘는 이제 생성자잖아요.
생성자의 가장 기본적으로 여러 개가 이미 다 정의가 되어 있을 건데 시체 종류로 되어 있으면 얘가 버튼의 이름이구나라고 인식을 할 겁니다.
参会者 1 18:02 颜色橙色 这是指定橙色,可以设置背景,布局是布局是什么呢?稍后会讲解。现在先跟着做一遍,然后会出现一个例子。布局是什么?就是划分区域。划分区域,但是这部分现在暂时不详细解释,等一下再说。所以先跟着做一遍,然后添加按钮。因为按钮已经存在,如果成立的话,就可以在框架中使用这些按钮。所以创建一个新按钮,这里是默认值,这是构造函数。构造函数基本上已经定义好了,如果是文本类型,它会识别这是按钮的名称。
Attendees 1 18:57
그래서 OK라고 작성을 하면 이 버튼의 이름이 OK로 바뀌고 그리고 펜슬 리그노얼 이렇게 해서 3개의 버튼을 만들었고 그다음에 사이즈는 이 전체 사이즈예요.
그래서 셋 사이즈는 이 프레임의 사이즈이고 셋 비저블을 통해서 셋 비저블은 반드시 맨 끝에다가 작성을 해 주셔야 돼요.
왜냐하면 먼저 다 그 객체에 대한 구성 요소를 만들어 놓고 화면에 표시를 하는 거기 때문에 셀 비자블은 맨 마지막에 작성을 해 주시면 됩니다.
얘도 이제 한번 해보죠. 직접 해보시면 되니까. 그래서 버튼 만들기 콘텐츠 캔을 먼저 작성을 해 주시고
参会者 1 18:57 所以如果写"OK",按钮的名称就会变成"OK",然后创建了 3 个按钮。接下来是整体大小。设置大小是针对这个框架的,通过设置可见性,必须在最后设置。因为要先创建所有对象的组成部分,然后再显示在屏幕上,所以设置可见性要放在最后。那就一起尝试一下。可以直接操作。所以先创建内容画布。
Attendees 1 20:15
다시 말해서 제 프레임의 셋 타이틀 셋 지 클로즈 오퍼레이션 하고 셋 사이즈 다 위에 있어도 돼요.
얘 꼭 밑에 있어야 되는 건 아니에요. 얘는 그냥 구성을 먼저 하고 화면에 보여지기 전에 화면 크기 설정하고 이렇게 하는 거라서 먼저 기본적으로 요 아까 했던 4개 또는 3개를 작성을 하시고 그 사이에다가 이 내용들을 넣으셔야 됩니다.
타이틀을 아까 했던 그 4개의 메소드는 반드시 기재를 하셔야 하고 추가된 내용들이 위치는 상관이 없어요.
대신에 셋 비저블 위에만 작성이 되어 있으면 돼요 하시고 호출하시면 색깔이 잘
与会者 1 20:15 换句话说,我的框架的设置标题、设置关闭操作和设置大小都可以在上面。它不一定要在下面。这只是先构建配置,然后在显示到屏幕之前设置屏幕大小等。所以您首先要编写之前提到的 4 个或 3 个方法,然后在它们之间插入这些内容。标题必须包含之前提到的那 4 个方法,添加的内容位置无关紧要。只需确保在设置可见之前编写并调用,颜色就会很好地
Attendees 1 21:07
그래서 아마 자바 스윙에서는 내용들이 많기 때문에 어떤 내용이 있는지를 아는 게 아는 게 더 많이 아는 게 본인의 능력인 거고 그 외에 사용하는 건 그렇게 어렵지 않아요.
화면에 보여지는 그대로 내가 작성한 코드가 그대로 화면에 보여지기 때문에 에러 효소라든지 이런 것들은 충분히 쉽습니다.
오히려 자바 텍스트로 된 작업이라
与会者 1 21:07 因此,在 Java Swing 中,由于内容很多,了解有哪些内容是更重要的能力,而使用它并不那么困难。因为您编写的代码会直接显示在屏幕上,所以错误等都很容易处理。相反,对于基于文本的 Java 工作来说
Attendees 1 21:49
어때 재밌지 이제 이거는 보통 스윙이나 GUI는 감각이 좋은 여학생들이 주로 좋아해요.
안 돼가지고 물도 좀 안 좋아졌고 물도 안 나오네
与会者 1 21:49 怎么样,有趣吧。现在这个通常是对于 Swing 或 GUI,感觉敏锐的女学生们比较喜欢。不行,水质也变差了,水也不出来了
Attendees 1 22:09
치고 똑같이 지 띄우지 말고 이거 위에 띄워주는 방 띄우지 얘가 이거 갖다 붙였더니 얘가 화가 났네.
그래서 그랬구나 여기가 여기 수정을 좀 볼게요. 이게 오타가 나 그래서 이게 붙여놨더니만 여기가 n이 없어야 되고
与会者 1 22:09 停止,不要同样地抬高自己,这个要放在上面,不要放在这里。他把这个贴上去后,他就生气了。原来如此,我们来看看这里的修改。这里好像有个拼写错误,所以他贴上去后,这里应该没有 n
Attendees 1 23:18
이제 됐다 붙여넣기 하니까 얘가 붙여지는 데 이렇게 써주세요.
제가 웃다가 놨네요. 귀찮았더니
出席者 1 23:18 现在可以了,粘贴后就能粘上了,请这样写。我都笑掉了。感觉有点麻烦
Attendees 1 23:44
안 어려울 거예요. 아마 생선 쭉 쭉쭉쭉 나갈 수 있고 아마 끝날 때쯤 되면 그림판 하나 정도는 만들 수 있을 거예요.
그러면 이렇게 하시고 그다음에 우리가 보통 시스템을 종료할 때 시스템 엑시티브 리퀘스 쓰시거든요.
우리 그거 시어어에서 리턴 메인에서 리턴 제로 해서 종료되는 것처럼 프로그램을 종료할 때 시스템 ws을 사용합니다.
出席者 1 23:44 这不会很难。大概可以一直绘制鱼,到最后可能能做一个画图板。然后这样做,接下来我们通常在关闭系统时会使用系统退出请求。就像我们在 C 语言中从主函数返回零来结束程序一样,在关闭程序时使用系统退出。
Attendees 1 24:13
그래서 이게 메모리에 계속 상주하지 않도록 클로즈 해 주는 방법이 있는 거고 그다음에 아까 얘기했던 xq를 클릭하면 프레임이 윈도우 여기 그대로 읽어보면 프레임을 종료하여 프레임 윈도우가 닫히고 화면에 보이지 않은 부분 않게 되고 응용 프로그램이 사라지고 보이지 않게 되지만 응용 프로그램이 종료된 게 아니라 비저블 s 비저블 2를 호출하게 되면 보이게 되고 이전처럼 다시 작동하게 되는 거 화면에는 보이지 않지만 화면에 프로그램이 종료가 되지 않은 상태이기 때문에 반드시 이 클로즈를 쓰셔야 한다 이렇게 나와 있죠.
그래서 우리가 프로그램이 우리 눈에 보이지 않는다고 해서 프로그램이 종료가 되는 게 아니에요.
그래서 이 여기 보시면 프레임의 셋 디폴트 클로즈 오퍼레이티 이거 익 클로즈를 했잖아요.
所以这是为了不让它一直驻留在内存中,需要关闭它。然后,正如之前提到的,当点击 x 时,框架窗口会关闭,屏幕上看不到,但应用程序并没有退出,而是变成不可见状态。如果调用 setVisible 2,它又会重新显示并像以前一样工作。虽然屏幕上看不到,但程序并未终止,因此必须使用 close。所以即使程序对我们的眼睛来说不可见,也并不意味着它已经结束。在这里,你可以看到我们设置了框架的默认关闭操作。
Attendees 1 25:08
클로즈 할 때 익시하도록 이거 시스템 익을 강제 종료를 하게 해주는 건데 프로그램을 종료할 때 우리가 여기 보이지 않는 세피 퍼스로 되어 있는 상태에서 존재하지 않게 하기 위해서 반드시 얘를 넣어줘야 됩니다.
그래서 원래는 프로그램 구동에는 상관이 없어 보이지만 반드시 셋 타이틀 셋 사이즈 그다음에 디폴트 클로즈 오퍼레이 션하고 셋 비저블 얘는 이게 x표를 닫는 거고 셋 비저블은 보였다 안 보였다 하는 내용이기 때문에 이거 4개는 반드시 지켜서 써주라는 얘기를 한 번 더 한 거고 메인이 종료한 뒤에도 프레임이 살아있는 이유는 스윙 프로그램이 실행되는 동안에 스레드라고 하는 이제 돌아가고 있는 역할을 하는 게 우리가 쓰레드라고 해요.
그래서 이 메인 스레드와 이벤트 분배 스레드로 구성이 되어 있습니다.
关闭时强制退出系统。当程序处于不可见状态时,为了使其不再存在,必须使用这个设置。虽然看起来对程序运行没有太大影响,但必须使用设置标题、设置大小、设置默认关闭操作和设置可见性这四个方法。x 标记关闭,而 setVisible 是控制显示和隐藏。主线程结束后,框架仍然存在的原因是因为在 Swing 程序运行期间,有称为线程的角色在运行。这个系统由主线程和事件分发线程组成。
Attendees 1 26:00
메인 스레드는 우리 메인에서 실행하는 스레드를 얘기하고 얘는 프로그램이 완전히 종료될 때까지 계속 살아 있습니다.
그래서 그 자바 운영 프로그램을 실행하는 동안 시작하는 것을 메인 스레드에서 실행하는 거고 우리가 버튼을 클릭하고 막 하다 보면 지금은 하나밖에 말이 더 빨라졌다.
지금 하나밖에 없는데 이제 창이 여러 개를 막 띄워놓을 수 있어요.
막 누르면 누를수록 세피저블하고 퍼스하고 막 이래서 막 하는데 막 100개도 띄우고 그러거든요.
사실 걔가 프로그램이 구동하고 꺼지지 않는 동안에는 화면에 보이지 않을 뿐이지 사실은 이 프로그램이 이 계속 살아 있습니다.
그냥 보여지지 않는 것뿐이에요. 그래서 걔네들을 종료를 제대로 켰다 꺼졌다 하는 것들을 잘 활용하셔야 돼요.
그러니까 예를 들어서 내가 프로그램을 이렇게 판넬을 만들었어요.
与会者 1 26:00 主线程是指在我们的主程序中运行的线程,它会一直存在直到程序完全终止。所以在运行 Java 程序期间启动的,都是在主线程中执行。当我们点击按钮等操作时,现在只有一个,话说得更快了。现在只有一个,但现在可以打开多个窗口。不断点击会变得可分割和可推送等,可以打开 100 个窗口。事实上,只要程序在运行且未关闭,这些窗口即使不可见也仍然存在。它们只是不显示而已。因此,您需要正确地启动和关闭这些窗口。比如,我创建了一个面板。
Attendees 1 26:50
판넬을 꺼버리면 다시 만들 때 다시 개 위치 설정했다가 다시 보여줬다가 다시 얘 x표를 닫으면 다시 켰을 때 다시 위치 만들어서 하면 너무 비효율적이잖아요.
그래서 어떻게 하냐면 만들어놓고 s 비저블을 통해서 펄스를 했다.
안 보였다가 다시 보여줬다. 그럼 새로 만들 필요 없이 보였다 안 보였다만 이렇게 하는 방법이 있고 완전히 지웠다가 새로 만들어서 보여줬다 이렇게 하는 방법이 있잖아요.
그래서 그런 것들이 지금은 이제 연습을 하다 보면 한두 개밖에 안 만드니까 상관이 없지만 얘가 창이 되게 많이 있을 때는 그러니까 우리 그거 그거지 이거 이거 앱 쓰다 보면 계속 띄워져 있잖아요.
그러니까 예를 들어서 제가 설명을 이게 아마 이것도 자바랑 느낌이 비슷하니까 안드로이드니까 어떤 느낌이냐면 내 건 애플이지만 아무튼 이렇게 보면 이제 띄워져 있는 내가 켜놓은 게 띄워져 있잖아요.
근데 얘가 이렇게 해서 안 보인다고 앱이 없는 거 아니죠 근데 살아 있어.
与会者 1 26:50 如果关闭面板,每次重新创建时重新设置位置,重新显示,然后关闭再重新打开时重新创建位置,这会非常低效。所以我们可以怎么做呢?创建后通过设置可见性为 false 来隐藏。不可见时可以再次显示。这样就不需要重新创建,只需要显示和隐藏。还可以完全删除后重新创建并显示。现在因为只创建一两个窗口所以没关系,但当有很多窗口时,就像我们使用应用程序时总是有窗口打开一样。打个比方,比如我说的,这可能与 Java 感觉相似,是安卓,但感觉就像是我的苹果,总之就是这样,我打开的窗口仍然存在。但即使它不可见,这个应用程序也并不意味着不存在,它仍然是活跃的。
Attendees 1 27:52
근데 내가 보고 싶으면 이렇게 얘는 그냥 했던 것들이 보이죠.
그래서 그렇게 보이고 안 보이고를 해놓고 할 건지 아니면 내가 이거를 다 지우고 난 다음에 원하는 거를 다시 킬 때는 그 키게 되면 화면이 다시 이렇게 갱신을 하잖아요.
그러니까 이런 것들을 잘 관리를 해줘야 돼요. 메모리에서 그래서 셋 비저블과 생성하는 거는 이런 효과가 있기 때문에 그런 것들을 메모리 처리해 주기 위해서 반드시 내가 안 쓰겠다.
장기적으로 안 쓰겠다 하면 클로즈를 해 주셔야 된다.
그 얘기를 지금 여기서 조금 설명하고 있는 거고 컨테이너라고 이제 처음으로 우리 컨테이너 펜을 이제 배웠는데 컨테이너에서 컨텐트 펜을 배웠는데 컨테이너는 무슨 역할을 하냐면 약간 이것도 설명이 맞겠지만 약간 책상 위에 종이 같은 거예요.
책상 위에 종이 같은 거 그래서 컨테이너 여기 표시된 걸 먼저 설명을 좀 드려볼게요.
与会者 1 27:52 如果我想查看,那么我的这些之前做过的内容就会显示出来。所以是这样显示和不显示,还是我要删除所有内容,然后在需要的时候重新打开,这样屏幕就会重新刷新。所以这些都需要好好管理。因此,在内存中,设置可见性和创建这些是有这种效果的,所以为了内存处理,如果长期不使用,必须关闭。这就是现在正在解释的内容。容器,我们现在第一次学习了容器笔,学习了容器的内容笔,容器的作用就像是桌子上的一张纸。就像桌子上的一张纸,关于这里显示的内容,我先给大家解释一下。
Attendees 1 28:51
컨테이너마다 하나의 배치 관리자가 존재하며 삽입되는 모든 컴포넌트의 위치와 크기를 결정하고 적절히 배치한다.
그래서 백지 관리자가 선생님이에요. 컴포넌트가 이제 학생인 거지 그래서 여기 책상을 어디로 몇 개를 구성을 하고 몇 줄로 할 건지 이런 것들을 컨테이너가 관리를 한다는 거고 컨테이너의 크기가 변하면 내부 컴포넌트들의 위치와 크기도 모두 재조절된다.
이건 당연한 거죠. 그러니까 예를 들어서 저는 이제 이렇게 이 책에서는 교실로 보고 선생으로 봤는데 저는 이제 보통 그렇게 생각했거든요.
설명할 때 책상 위에 영역 구역을 정하고 그 구역이 컨테이너고 그 구역 안에 물건들을 이렇게 놓잖아요.
그 위치가 근데 위로 겹쳐서 넣을 수도 있지만 그 공간을 벗어나면 오버플로우가 다 돼서 자동으로 이렇게 좁혀서 넣을 거 아니에요 그 내용을 지금 여기서 설명을 하는 거예요.
与会者 1 28:51 每个容器都有一个布局管理器,它决定插入的所有组件的位置和大小并适当地排列。所以布局管理器就像是老师。组件就像是学生,它会管理桌子的构成、行数等。当容器的大小发生变化时,内部组件的位置和大小也会相应调整。这是理所当然的。例如,书中是用教室和老师来比喻,而我通常是这样思考的。解释时,就像在桌子上划分区域,这个区域就是容器,然后在这个区域内放置物品。虽然可以重叠放置,但如果超出这个空间,就会溢出,所以会自动缩小内容。这就是现在正在解释的内容。
Attendees 1 29:49
여기에 프로그램 자체는 크기가 줄어들면 자동으로 걔네가 겹쳐서 하든지 붙어서 하든지 떨어져서 배치가 됐다고 이렇게 붙어서 하든지 그런 자동으로 처리가 된다는 걸 얘기하는 거고
出席者 1 29:49 在这里,程序本身在缩小尺寸时会自动处理,无论是重叠还是粘在一起,还是分开排列,都会自动进行布局
Attendees 2 30:03
자
出席者 2 30:03 是的
Attendees 1 30:04
배치 관리자 대표적인 유형 4가지가 있다고 합니다.
네 가지 요거 레이아웃이 네 가지가 있어요. 이 네 가지 레이아웃이 좀 중요한데 플로우 레이아웃은 내가 플로우 레이아웃을 쓰겠다라고 하면 굳이 얘가 얘가 첫 번째 애를 여기다 놓고 그럼 얘 픽셀 어디에 있고 두 번째는 얘는 이제 옆에 100픽셀에 놓고 얘는 세 번째는 300픽셀 이렇게 할 필요 없이 내가 그냥 차곡차곡 넣으면 자기가 알아서 착착착착 옆으로 붙어요.
이해 갔어요. 그렇게 하는 게 플로우 레이아웃이야 내가 그냥 추가하면 그냥 알아서 착착착착 옆에다 붙어.
지민아 얘가 다 이해 가요 이해 가요? 그다음에 보더 레이아웃은 내가 구획을 이제 정해야 돼.
보더는 보더는 내가 그 공간을 해놓고 착착착착 붙는 게 아니라 내가 추가를 하면 그 위치에 하나씩 붙어 자기 자리에 이게 보더고요.
与会者 1 30:04 说布局管理器有四种典型的类型。有这四种布局。这四种布局很重要,流式布局是如果我想使用流式布局,那么我不需要把第一个元素放在这里,然后说它在某个像素位置,第二个在 100 像素处,第三个在 300 像素处。我只需要依次添加,它就会自动地一个接一个地排列。明白了吗?这就是流式布局,我只需添加,它就会自动地排列在旁边。明白了吗?然后边界布局是我现在需要定义区域。边界不是自动排列,而是当我添加时,它会按照指定的位置一个接一个地放置,这就是边界布局。
Attendees 1 31:01
그다음에 그리드는 얘가 이제 셀을 나눠 구획을 정확하게 셀을 나눠서 네모 영역으로 하나씩 넣는 거고 카드 레이아웃은 위로 겹쳐져 그래서 자기가 원하는 이제 형태로 나는 자유롭게 하고 싶다.
그러면은 카드 카드 레이아웃으로 쓰면 되고 이렇게 겹쳐서 하든지 이렇게 나는 픽셀 넣어서 여기에 너는 10 픽셀 그러면 10픽셀 넣고 효준이 20픽셀 이렇게 넣으면 등치가 크든 안 크든 겹쳐서 막 자기가 알아서 이렇게 내 마음대로 딱 정하고 싶을 때는 이렇게 하면 되고 그다음에 그게 아니면 옆으로 탁탁탁 알아서 자기 사이즈가 100이면 100만큼 늘려서 그 옆에 자동으로 붙이게 하고 싶으면 플로우 레이아웃을 쓰면 되고 아니면 난 그런 거 필요 없다.
각 공간을 나누고 싶다 그러면 이렇게 그림으로 쓰고 보더도 이런 식으로 활용을 하시면 됩니다.
与会者 1 31:01 然后网格布局是将单元格划分,准确地将单元格划分为矩形区域,一个接一个地放置。卡片布局是层叠在上面,所以如果我想自由地按自己的形式排列,那么可以使用卡片布局。可以层叠,或者我可以按像素放置,比如你放 10 像素,效俊放 20 像素。无论大小如何,都可以层叠,完全按照自己的意愿安排。如果不想这样,想要一个接一个地自动排列,宽度为 100 就扩展到 100,然后自动排列在旁边,就使用流式布局。如果不需要这样,想要划分空间,就可以这样使用图形和边界布局。
Attendees 1 31:59
자바 글에서 자바 awt 패키지에 구현이 되어 있는 내용이고 이것을 기반으로 해서 우리가 여러 가지 버튼이라든지 이런 것들을 넣으면 거기에 차곡차곡 쓰여지겠죠.
그러면 이제 우리가 레이아웃을 먼저 설정을 해야 돼요.
내가 어떤 레이아웃을 쓸 건지 정하고 그다음에 버튼을 추가하면 버튼이 어떻게 붙을 건지를 결정을 해야 되기 때문에 그래서 우리가 보통 많이 이제 교육적으로 많이 사용한 건 플로우 레이아웃입니다.
그냥 만들면 만드는 이런 쪽 쭉쭉쭉 추가되게 하기 위해서 그래서 컨테이너에는 이런 배치 관리자가 있고 배치 관리자의 수익과 보더 레이아웃, 플로우 레이아웃 이런 것들이 여기 이제 각각의 객체마다 조금씩 배치 관리자가 다르기 때문에 이런 내용들을 테이블로 표시가 되어 있고 그다음에 컨테이너의 레이아웃을 설정하는 방법은 셋 레이아웃이에요.
与会者 1 31:59 在 Java 文章中,这是在 Java AWT 包中实现的内容,基于此,我们可以添加各种按钮等。然后,我们首先需要设置布局。我们需要确定使用什么布局,然后再添加按钮,决定按钮如何放置。所以我们通常在教育中使用流式布局。只是为了使其逐步添加。容器中有这种布局管理器,布局管理器有边框布局、流式布局等,因为每个对象的布局管理器略有不同,这些内容已在表中显示,然后设置容器布局的方法是 setLayout。
Attendees 1 32:55
셋 말이 길어지니까 지금 또 다시 눈이 멍멍해졌는데 우리 한번 해보지 뭐 정말 필요 없고 한번 해보죠.
그럼 첫 번째 거가 옆으로 이렇게 붙어서 나왔죠. 그다음에 이거는 이 사이즈가 커지면 자동으로 또 사이즈가 공간이 모자라면 첫 번째 줄을 채우고 자동으로 밑에 줄이 채워지는 거고 사이즈가 옆에 가로가 충분히 있다고 가로로 이렇게 배치가 자동으로 된다는 걸 지금 예제로 보 주고 있어요.
컨테이너를 플로우 레이아웃으로 센 레이아웃을 플로우 레이아웃으로 설정을 하고 거기다 버튼을 추가할 때마다 알아서 얘가 배치를 해 주는데 배치 모양이 이렇게 생겼습니다.
그러면 우리 여기다가 한번 추가를 해봐야겠죠 아까 만들어 놓은 먼저 컨테이너가 있고 컨테이너에 콘텐츠 펜이 필요합니다.
与会者 1 32:55 说得太长,现在又开始眼花了,我们不如试试看。那么第一个是横向排列的。然后,如果这个尺寸变大,空间不足,它会自动填满第一行,并在下一行继续填充。如果横向空间足够,就会自动横向排列。现在正在通过示例展示这一点。将容器的布局设置为流式布局,每次添加按钮时,它都会自动排列,布局看起来就是这样。那么我们接下来要在这里添加一些内容,首先要有一个容器,容器还需要一个内容面板。
Attendees 1 33:47
콘텐츠 펜으로 컨테이너를 만들어 놓고 그러면 이제 바탕에 이렇게 공간이라고 생각하시면 되고 그 공간에 셀 레이아웃과 버튼 아까는 버튼 3개를 만들었었는데 어떻게 됐냐면 처음에 만들 때는 이렇게 그냥 중간을 기준으로 하나씩 추가가 이렇게 왼쪽으로 밀리면서 만들어졌죠.
근데 플로우 레이아웃으로 셋 레이아웃을 하게 되면 이와 같이 붙어요.
그래서 이것 2개 정도 더 붙여놓고 셋 레이아웃을 플로우 레이아웃으로 생성하셔서 넣으시면 됩니다.
그래서 플로우 레이아웃의 규칙에는 요거 래프 점 레프트 레프트 왼쪽부터 그리고 간격을 두고 왼쪽 오른쪽 간격을 두고 하겠다라는 이 레이아웃 형태를 맞춰서 생성해 주세요.
이거는 이제 요 셋 레이아웃 생성자를 호출할 때 필요한 그냥 하면 그냥 나오겠고 이제 그 속성 값을 주면 우리가 생성자의 거기 생성자 호출할 때 해당되는 걸 호출하겠죠 이거 그 정도는 이제 이해를 하실 것 같아요.
이해 갔죠?
参会者 1 33:47 使用内容笔创建容器,然后可以将其视为背景上的空间,在这个空间中使用单元格布局和按钮。之前我们制作了 3 个按钮,最初创建时是以中间为基准,每次添加都会向左移动。但是使用流式布局时,它们会紧密地排列在一起。所以可以再添加 2 个,然后使用流式布局创建单元格布局。流式布局的规则是从左侧开始,并保持左右间距。这是在调用单元格布局构造函数时需要考虑的,如果不指定属性,就会使用默认设置。调用构造函数时可以指定相应的参数。这部分应该能理解了吧?
Attendees 1 34:54
지금 뭔 말하는지 그래서 플로우 레이아웃의 생성자 중에 3개의 요소를 가지고 있으니 그중에 하나를 호출해서 이렇게
参会者 1 34:54 我现在正在讲解流式布局的构造函数,它包含 3 个元素,可以选择其中一个进行调用。
Attendees 1 35:35
그래서 제 프레임 프레임에서 컨테이너에서 이게 해서
所以在我的框架框架的容器中这样做
Attendees 1 35:52
그다음에 에서 추가로 뉴 버튼하고 또 뉴
然后在那里添加新按钮和另一个新的
Attendees 1 36:04
플로 레이어 이미 다 이미 제 프레임 스윙에 다 이미 존재하고 있는 클래스를 호출했고 그 클래스를 호출할 때 만약에 이 버튼의 경우는 지금 우리가 스트링을 넣었잖아요.
근데 버튼은 여기 지금 스트링을 넣었을 때 겉은 예상하면 얘가 생성자잖아요.
그럼 얘의 기본 생성자가 있을까요? 버튼 에드 기본 생성자가 있어요.
근데 얘 에드 안 넣으면 그냥 그냥 네모 박스만 나와 글씨 없는 네 버튼이 나올 만약에 이제 애드를 넣었어 애드 이게 생각해 보면 이 버튼이 애드를 스트링을 넣었으니까 스트링을 넣었는데 내가 사이즈도 넣고 싶어 싸울 수도 있지 않을까 있을 것 같아.
그냥 버튼 놓고 여기 에드 넣고 300 콤마 300 하면 300포인트짜리 버튼이 나오겠다.
왜냐하면 그거는 그 클래스에서 버튼이라는 생성자를 여러 개 쓸 수 있잖아.
与会者 1 36:04 流层已经在框架 Swing 中存在的类已经被调用,当调用该类时,如果是这个按钮,我们现在放入了字符串。但是当在按钮上放入字符串时,这是构造函数。那么它是否有默认构造函数?按钮添加是否有默认构造函数?但是如果不添加,就只会出现一个没有文字的矩形按钮。如果现在添加了,考虑到按钮放入了字符串,我可能还想设置大小。只需放置按钮,在这里添加 300,300,就会得到一个 300 点大小的按钮。因为在那个类中可以使用多个按钮构造函数。
Attendees 1 37:07
그러니까 내가 이렇게 처음에 생성자를 호출할 때 만약에 스트링 하나를 넣었다 하면 여러 개의 생성자들 중에 스트링 하나를 가지고 있는 생성자를 호출한 거겠지 예상이 되는 거지 자바를 들었으니까 그치 그래서 그렇게 해서 만들었다.
너 왜 꼭 이렇게 써야 돼요? 그거 아니야 그쵸 그러면 안 어려워서 재미있을 것 같은데 이제 넘어가도 될 것 같아요.
됐어요. 괜찮죠 다음 거 그럼 배치를 이렇게 했어 아까는 그럼 플로우 레이아웃으로 했는데 그럼 보도 레이아웃으로 하면 어떻게 생겼을까 한번 해봅시다.
보더 레이아웃을 하게 되면 보더 레이아웃은 구획을 내가 만들 수 있다 했잖아요.
그러면 이제 고액을 한번 지적을 해보도록 할게요.
그러면 얘를 그걸 덮어 씌우시든지 아니면 클래스를 새로 만드시든지 그거는 이제 본인이 우리 ex 만들어서 한 것처럼 그렇게 해서 하시던지 여러분이 방법을 취해서 하세요.
이번에는 레이아웃을 보더 레이아웃으로 지정할 건데 보더 레이아웃의 지정 방법은 사이즈예요.
与会者 1 37:07 所以当我第一次调用构造函数时,如果放入一个字符串,那么在多个构造函数中,我调用的是具有一个字符串的构造函数。这是可以预料的,因为学习了 Java。就这样创建的。为什么一定要这样写?不是这样。那么这似乎不会很困难,会很有趣。现在我们可以继续了。好的,没问题。那么我们刚才使用了流布局,如果使用边框布局会是什么样子?当使用边框布局时,我可以创建区域。那么现在我们将指出这一点。你可以覆盖它,或者创建一个新类,就像我们之前创建的示例一样,请按照自己的方式进行。这次我们将布局指定为边框布局,边框布局的指定方法是大小。
Attendees 1 38:22
사이즈를 지정을 할 수 있고 그다음에 여기서 반드시 필요한 거는 아까는 에드를 할 때 애드 할 때 버튼만 추가했는데 보더 레이아웃의 경우는 우리 홈페이지 만들면 맨 위에 있고 그다음에 왼쪽 있고 오른쪽 이 가운데 있고 밑에 있잖아요.
우리 이걸 섹션이라고 하거든요. 그때 세그먼트의 섹션 시맨틱이라는 HTML 배우시면 이제 처음에 나오는 그런 내용인데 아무튼 시맨틱이라는 구획이에요.
근데 얘가 가장 기본으로 탑 그다음에 레프트 그리고 메인 그다음에 여기 어사이드 그다음에 밑에 특허 이렇게 두는데 그 기본 형태를 이렇게 보더 레이아웃이 똑같이 갖고 있어요.
그래서 보더 레이아웃에 가운데를 센터로 두는 거고 그다음에 여기서는 놀스 이름을 이렇게 썼네요.
동서남북으로. 근데 이제 홈페이지나 이런 데는 이름이 다 헤더 푸터 이렇게 있는데 얘는 동서남북으로 잡혀 있고 센터만 가운데 있어요.
그래서 내가 동서남북에 맞게 버튼을 이렇게 구획을 만들어서 넣을 수 있다.
参会者 1 38:22 可以指定大小,然后这里必须要的是,之前添加按钮时只添加了按钮,但对于边框布局来说,就像我们制作的网页,最上面有,然后左边有,右边有,中间有,底部也有。我们称之为区段。这是语义,当你学习 HTML 时最初会遇到的内容,总之是语义区块。但它基本上有顶部、左侧、主体、侧边和底部。边框布局完全具有这种基本形式。所以在边框布局中,中间是居中的,然后在这里用东西南北来命名。但在网页等地方,名称都是页眉、页脚等。它是按东西南北方位排列的,只有中心在中间。因此,我可以按照东西南北方位创建并放置按钮区块。
Attendees 1 39:34
그래서 플로우 레이아웃의 경우는 알아서 제가 착각 착각을 하니까 위치 지정이 필요 없지만 보더 레이아웃은 반드시 위치 지정이 있어야 돼요.
그게 차이가 있어요. 한번 이것도 한번 해봐야지 아는 거니까
参会者 1 39:34 所以对于流式布局,不需要位置指定,但边框布局必须指定位置,这就是它们的区别。这也是值得尝试的,因为只有尝试才能真正了解。
Attendees 1 40:05
이거는 눈에 바로바로 보여서 아마 할 수 있어. 여기 보시면은 우리 보더 레이아웃을 만들 때 30 20 있잖아요.
이건 여백이야 여백 그러니까 센터하고 버튼 위아래 동서남북으로 만들어 놓고 그 간격이 내가 간격을 안 주겠다 그러면 00 하면 돼.
그리고 만약에 이거 디폴트로 역량이 되어 있으면 내가 이거 숫자를 안 넣어도 되고 그런데 내가 숫자를 가로세로 간격을 넣고 싶다.
그러면 가로는 30 세로는 20을 넣고 싶다. 그러면 가로세로 값을 넣으면 이거는 만들 때 생성자가 이거를 만들어 놓은 뭐지 스윙의 보 레이아웃에 얘도 생성자가 여러 개가 있을 거니까 그래서 가로세로 넣는 거를 먼저 해보는 거고 픽셀은 x 좌표 y 좌표 하고 나머지는 똑같이
参会者 1 40:05 这个是可以立即看到的,我想我可以做到。如果您看这里,我们在创建边框布局时有 30 20,这是边距。所以是中心和按钮上下左右放置,如果我不想给间距,那就是 00 即可。如果这是默认设置,我不需要输入数字,但如果我想输入横向和纵向间距,比如横向 30,纵向 20,那么在创建时会有多个构造函数,所以先尝试输入横向和纵向,像素是 x 坐标和 y 坐标,其他都一样。
Attendees 1 41:28
됐죠. 안 어려워서 또 바로 그럼 다음 레이아웃을 한번 봐야겠다.
다음 거는 이제 그리드 레이아웃이에요. 그리드 레이아웃은 이제 이 구획을 나눠서 사각 벌집 모양으로 만들어 놓는 건데 먼저 정렬하는 방법은 가로부터 먼저 채워요.
그다음에 공간에 따라서 꽉 채워지면 공간이 부족하면 그냥 밑으로 내려와요.
그래서 4 5 6 채우고 또 그래도 공간이 부족해서 다음 객체가 있다 그러면 밑에 붙어요.
그래서 가로부터 채워주고 세로로 내려가는 형식으로 되어 있고 여기서는 지금 적어도 1 11개의 리드가 객체가 필요하네요.
그러면 이 내용이 되게 길어지겠네. 어쨌든 그리드 레이아웃을 한번 작성해 볼게요.
여기도 써 있네. 여기 생성자 보더 레이아웃의 생성자는 두 개로 구성이 되어 있대요.
이거 기본 생성자랑 그다음에 가로 세로 있는 거 그러면 플로우 레이아웃 플로우 레이아웃도 그건 마찬가지로 있네요.
参会者 1 41:28 好了。不难,那么我们来看下一个布局。下一个是网格布局。网格布局是将区域划分成蜂窝状的矩形。首先排序是从横向开始填充。然后如果空间不足,就会向下移动。所以填充 4 5 6,如果空间仍然不足,下一个对象就会在下面。从横向开始填充,然后向下移动。这里至少需要 11 个网格对象。不管怎样,我们来编写网格布局。这里也写着呢。边框布局的构造函数有两种。一个是基本构造函数,另一个是带横向和纵向的。流式布局也是同样的情况。
Attendees 1 42:35
3개 기본 생성자가 있고 그다음에 얼라인이 있고 얼라인에 가로세로 여기도 마찬가지 이렇게 돼 있고 그다음에 그리드 레이아웃 그리드 레이아웃의 생성자는 3개로 구성이 돼 있어서 기본 생성자를 호출해도 되고 가로세로 열수를 지정하고 또는 행수 열수를 지정한 후에 그 간격을 넣을 수도 있고 그래서 이와 같은 예제를 만들어 봤네요.
그러면 이제 얘가 그리드의 경우는 이렇게 이렇게 해서 4개의 행과 두 개의 열로 이루어졌는데 첫 번째 거는 텍스트만 넣었고 두 번째 거는 아까는 버튼이었는데 이번에는 한번 텍스트를 넣어볼 건데 우리가 이렇게 글씨만 적혀 있는 이거를 라벨이라고 하고 이거는 이제 홈페이지랑 똑같이 생겨가지고 아마 쉬울 거야 라벨이라고 하고 이거를 우리가 텍스트 필드라고 해요.
근데 홈페이지에는 여기가 그냥 인풋으로 돼 있고 여기에서는 얘가 그러니까 얘는 그냥 텍스트 타입이 텍스트인데 여튼 텍스트 필드 프로그램에 따라서 다 이름들이 다 다르게 정의가 돼 있지만 비슷비슷해요.
参加者 1 42:35 有 3 个基本构造函数,然后是对齐,对齐的水平和垂直方向也是如此。接下来是网格布局,网格布局的构造函数由 3 个组成,可以调用基本构造函数,也可以指定行数和列数,之后还可以设置间距。我制作了这样的示例。在网格布局中,它由 4 行 2 列组成,第一个只放置了文本,第二个之前是按钮,这次我们尝试放置文本。我们称这个只有文字的为标签,它看起来和网页很像,可能很容易。这个我们称为文本框。但在网页上这里是输入,在这里它是文本类型。总之,根据不同的程序,名称定义可能不同,但大致相似。
Attendees 1 43:46
그래서 라벨 넣고 필드 넣고 라벨 너 코 필드 넣고 해서 총 8개의 객체를 생성을 했네요.
레드로 그 만드는 방법은 버튼하고 똑같이 뉴로 그냥 만드시면 됩니다.
얘도 한번 해볼게요. 대신에 그리드로 선언이 되어 있어야 되겠죠 그리드도 생성자가 3개가 있다고 했어요.
아까 맞죠? 기본 생성자하고 가로세로 있고 또 보이는 가 가로세로 있고 펭거 열 있고 가로세로가 있고 가로세로의 간격도 또 있고 생성자가 3개가 있다고 하네요.
본인이 원하는 생성자를 호출하셔서 먼저 그리드를 만들어 놓고 그리드에 셋 해 주시고 안 되겠습니다.
셋 v 갭의 경우는 간격이에요. 그 행과 행 사이의 간격 줄 띄우기 줄 간격 우리 여기 한글과 컴퓨터의 경우에는 줄 간격이 있잖아요.
그 줄 간격 글씨와 글자 사이에 줄 간격이 그리게도 하시면
参加者 1 43:46 因此,放置了标签、文本框、标签、文本框,总共创建了 8 个对象。创建方法与按钮相同,直接使用 new 即可。我们也来尝试一下。前提是必须声明为网格布局。我之前提到过网格布局有 3 个构造函数,对吧?基本构造函数、行列,还有可见的行列,以及行列间距。有 3 个构造函数。您可以调用您想要的构造函数,先创建网格布局,然后设置到网格中。对于垂直间距,是指行与行之间的间距,就像我们在韩语和计算机中的行间距一样,字与字之间的行间距。
Attendees 1 44:59
내가 만약에 시험 문제를 낸다면 이렇게 낼 수 있겠어요.
홈페이지 모양처럼 이렇게 만들어 놓고 작성하시오.
그럼 이제 본인이 생각해야 되는 거야. 그린으로 할 건지 내가 그리드로 이런 거를 할 때는 그리드가 가장 기본적인데 나는 그러면 예를 들어 보더로 하겠다 할 수도 있어요.
보더로도 할 수 있고 근데 보전은 조금 약간 모양이 조금 구성하기가 어려우니까 또는 플로우 레이아웃으로 해도 되겠네요.
그쵸 플로우 레이아웃으로 이름이라는 글자에다가 와이드를 넣으면 자동으로 알아서 밑으로 채워질 거니까 플로우로 할 수도 있고 근데 딱 봤을 때 이런 경우는 테이블처럼 생겼으니까 테이블 모양에 그리드가 적합하겠다.
이거 판단을 여러분들이 하시는 거예요.
如果我出一个考试题目,我可以这样出。像主页一样制作,然后让人填写。这样,现在需要考虑本人的想法。是否用绿色(Green)或网格(Grid)布局,网格是最基本的。例如,我可能会选择边框(Border)布局。边框布局也可以,但稍微难以构建。或者也可以用流式(Flow)布局。对,如果用流式布局,名字的文字会自动往下填充。但是看起来像表格,所以网格布局更合适。这需要你们自己判断。
Attendees 1 47:27
그래 우리 아까 백그라운드 이제 배웠으니까 백
对,我们刚刚学习了背景,现在开始背
Attendees 1 47:40
수고하셨습니다.
参会人员 1 47:40 辛苦了。
Attendees 1 48:23
숫자도 바꿔보고 그래 한가열도 바꿔보고 백그라운드도 넣어보고
参会人员 1 48:23 也改变数字,改变热度,并添加背景
Attendees 1 49:33
이제 마지막에 배지 관리자가 없는 컨테이너라는 말은 카드 레이아웃인데 아무것도 없는 거예요.
그래서 내 마음대로 픽셀을 지정해서 만들어 놓는 거예요.
그래서 겹쳐 쓰기 겹쳐 써지기도 하고 공간이 모자라면 원래는 레이아웃이 되면 공간에 사이즈 맞게 자동으로 옆으로 나열을 했다면 카드 레이아웃의 경우는 그 나열이 안 되면 그냥 겹쳐지면 겹쳐지는 대로 보여지는 거예요.
포토샵에 보면 포토샵 레이아웃 한 것처럼 카드 레이아웃이라고 해요.
그래서 뭐지 컨테이너 셋 레이아웃이 없는 경우가 카드 레이아웃이에요.
카드 레이아웃을 따로 지정하는 게 아니라 없는 게 카드 레이아웃입니다.
그래서 이걸 한번 해볼 건데 타이틀 넣고 컨테이너 넣고 그다음에 셋 레이아웃 했고 라벨 넣고 셋 로케이션 로케이션이 되게 중요해요.
왜냐하면 내가 지정하는 위치에 값이 지정이 되기 때문에 그래서 셀 레이아웃에 셋 셋 로케이션을 각각 버튼이 있다면 버튼의 위치도 다 지정을 해줘야 돼요.
与会者 1 49:33 现在最后一个没有布局管理器的容器就是卡片布局,是什么都没有的。所以我可以随心所欲地指定像素并创建它。因此,它会重叠,如果空间不够,原本的布局会根据空间大小自动横向排列,而卡片布局的情况下,如果不能排列,就会直接重叠并显示。就像 Photoshop 中的布局,我们称之为卡片布局。所以,没有容器集布局的情况就是卡片布局。不是单独指定卡片布局,而是没有布局就是卡片布局。所以我将尝试一下,放入标题、容器,然后设置布局,放入标签,设置位置,位置非常重要,因为它会按照我指定的位置赋值。因此,在单元格布局中,需要为每个按钮设置位置。
Attendees 1 50:52
그런데 여기서 그게 일일이 얘는 10 얘는 20 이렇게 하기가 어렵잖아요.
그래서 어떻게 포문을 통해서 그냥 돌렸어 그냥 아무 데나 랜덤하게 따지고 보면 어느 정도 있다고는 하지만 사실 그냥 아무 위치나 내가 숫자를 일일이 넣지 않고 홈을 통해서 지정을 자동으로 해줄 수 있도록 하기 위해서 버튼을 생성을 먼저 해놓고 그 버튼에 대한 셋 로케이션을 두고 셋 사이즈 넣고 그래서 애드를 하게끔 만들어 놓은 거예요.
이거 마지막으로 한번 해보죠.
与会者 1 50:52 但是在这里,逐一指定这个是 10,那个是 20 是很困难的。所以我是通过 for 循环随机处理的,尽管有一定的范围,但实际上是为了不逐个输入数字,而是通过循环自动指定位置。先创建按钮,然后设置按钮的位置,设置大小,然后添加。最后让我们来尝试一下。
Attendees 1 51:29
x 좌표 y 좌표가 필요하기 때문에 포문을 통해서 x 곱하기 15는 적당히 내가 그냥 15 정도 너한테 줄 거예요.
参会者 1 51:29 x 坐标和 y 坐标是必需的,所以通过循环,x 乘以 15,我大概会给你 15 左右。
Attendees 1 52:11
갑자기 든 생각인데 지금 우리 클래스 이거는 클래스 단일 생성자를 포문으로 돌려서 9개를 만든 거잖아요.
그런데 이 객체를 객체별 우리 마지막에 객체별로 할 수 그러니까 포문으로 돌려서 생성된 게 아니라 만들어놓고 걔 위치에 바꿀 수 있어.
그렇게 하면 이제 그게 이제 여러분들이 게임에서 하면 이렇게 몸의 위치랑 이런 거 다 알잖아요.
그런 것처럼 만들 이거의 경우는 지금 그냥 랜덤을 표시하기 위해서 아 곱하기 15를 한 건데 여러분들이 정말 그 위치를 각각의 각도 저장하게 하고 싶은 대열의 요소로 객체 만약에 객체 클래스 하나 버튼이라는 객체처럼 버튼 버튼 말고 다른 객체를 만들어서 그 객체의 x 좌표 y 좌표를 기록하게 할 수 있도록 필드를 만들어서 할 수도 있겠죠.
그렇게 만들어내는 게 이제 게임에서 운영 캐릭터 이거 지금 배열로 바꾸라 그러면 시간 남으면 한번 배열로 바꿔보세요.
세 번째
参会者 1 52:11 突然想到,我们现在这个类是通过循环创建了 9 个单一构造函数。但是这些对象可以在最后按对象逐个处理,也就是说,不是通过循环生成,而是创建后可以更改其位置。这就像游戏中角色的位置和其他属性一样。现在这只是为了显示随机性而乘以 15,但如果你想为每个对象保存其位置和角度,可以创建一个类似按钮的对象,不是按钮,而是另一个对象,通过添加记录 x 坐标和 y 坐标的字段来实现。这就像游戏中操作角色一样。如果要将其转换为数组,如果时间充裕,可以尝试转换为数组。第三点
Attendees 1 54:21
공유된 글에서
与会者 1 54:21 在共享的文章中
Attendees 1 54:30
컨테이너에 펜을 만들고 콘텐츠 펜을 만들고 레이아웃 설정 탭 브라운 있는 거기 그다음에 거기 안에 객실 지정할 때 버튼으로 버튼으로 만들었지만 버튼이나 라벨
与会者 1 54:30 在容器中创建画笔,创建内容画笔,设置布局选项卡为棕色,然后在那里指定房间时使用按钮,但是是按钮或标签
Attendees 1 54:53
레이아웃에 플로우 그리드 그다음에 이렇게 풀죠.
그다음에 카드 이렇게 4개의 레이아웃이 있는 거 이거가 오늘 가장 중요한 포인트
与会者 1 54:53 布局中的流式、网格,然后这样解决。接着是卡片布局,这样总共有 4 种布局,这是今天最重要的要点
Attendees 1 55:22
한 사람은 그다음 페이지 이거 예제 문제인데 간단하게 만들어낸 거예요.
이거 그냥 따라서 한번 써보세요. 다른 사람 검사 맡고 갑시다.
与会者 1 55:22 一个人下一页这是一个示例问题,是简单创建的。只需按照这个尝试一下。让其他人来检查。
Attendees 1 55:38
얘는 제이 프레임 익스텐즈 받았고 이름은 티 멀티플 펜 리뷰 샘플이고 생성자에서 설정했고 메인은 얘는 그냥 호출만 했네.
그다음에 메인을 호출을 했는데 여기서 보면 제 패널 익스텐드 갖고 제 패널 익스텐드 가 된 두 개가 있고 펜 두 개를 하나는 버튼이 들어 있는 거 하나는 랜덤하게 넣었네.
랜덤하게 넣어서 만든 거. 그래서 이 프레임 하나 위에 두 개의 펜이 들어 있고 판넬이 들어 있고 두 개의 판넬은 첫 번째 판넬은 버튼 3개가 있고 두 번째 판넬에서는 글씨 여기서는 라벨로 써도 돼요.
라벨 3개가 있고 그다음에 걔를 메인에서 이 전체 프레임에서는 컨테이너 안에 두 개를 판넬을 로드했는데 보더로 로드 했어요.
그래서 보더에 그 뭐야 탑으로 하나 넣었네요.
与会者 1 55:38 这是一个 JFrame 扩展,名称是多重钢笔审查示例,并在构造函数中进行了设置。主程序只是调用了它。接下来,调用了主程序。在这里可以看到有两个 JPanel 扩展,有两支钢笔,一个包含按钮,另一个是随机生成的。随机生成后创建。因此,在这个框架上有两个钢笔和面板,第一个面板有 3 个按钮,第二个面板有文字(这里可以使用标签)。有 3 个标签,然后在主程序中,在整个框架的容器中加载了这两个面板,使用 Border 布局加载。所以在顶部放置了一个。
Attendees 1 56:49
우리 쪽에 메인에 하나 넣고 센터 하나 넣어 그래서 그림으로 표현하자면 멀티플 칸에는 프레임이 하나 있고 이 프레임에 펜이 하나 있고 그 펜에는 위에 놀스가 있고 센터가 있고 놀스에는 버튼 3개로 플로우를 플로우로 작성했고 두 번째 거는 랜덤하게 이 카드로 해서 있네 카드로 했고 얘는 플로우를 했어.
그다음에 얘 자체는 얘는 보더가 했네. 요 첫 번째 판넬은 보더예요.
보도를 해서 여기 보스를 해주고 센터로 해주고 그래서 1번 펜 2번 3번이 있고 1번은 2번 하고 3번을 호출한 거예요.
그래서 첫 번째 거는 펜 저거 큰 거 1번 펜이 있고 보더로 작성해 있고 보더에 첫 번째 두 번째 거를 다른 보더를 호출해 첫 번째 거 보더는 버튼 3개로 구성되어 있는 플로우고 두 번째 보더는 랜덤하게 들어 있는 카드 보더.
그래서 약간 주성이 그림판 이렇게 하면 버튼이 지금 3개인데 나중에 이거 이게 확장되면 그림판 만들려고 해서 지금 예를 든 거예요.
与会者 1 56:49 在我们这边的主程序中放置了一个,并放置了一个中心。如果用图形表示,多重面板中有一个框架,这个框架有一个面板,面板上有一个北部和中心,北部有 3 个按钮使用流式布局,第二个是随机的,使用卡片布局,它使用了流式布局。然后,这个本身使用了 Border 布局。第一个面板是 Border 布局。使用 Border 布局,在这里设置了顶部和中心。所以有 1 号面板、2 号和 3 号,1 号调用了 2 号和 3 号。因此,第一个是有大面板,使用 Border 布局,调用了两个不同的 Border,第一个是包含 3 个按钮的流式布局,第二个是随机的卡片布局。这有点像绘图板,现在有 3 个按钮,将来可能会扩展成绘图板,这是现在举的例子。
Attendees 1 58:29
메뉴 그림판 보면 맨 위에 메뉴가 있고 밑에 센터에 막 그림 그리잖아요.
그거 그림 그리는 판 기본형 만들어놓은 거고 예제를 앞에다가 벌써부터 약간 여지를 두었네.
听众 1 58:29 从菜单中看到绘图板,顶部有菜单,底部中间有绘图区域。这是绘图板的基本模板,并且已经在前面预留了一些空间。
Attendees 1 58:56
오늘은 문제 안 내고 저거 만드는 걸로 대체할게요.
听众 1 58:56 今天不出题,我们就用这个来代替。
Attendees 1 59:38
맞아 아니면 수업할 거야?
出席者 1 59:38 对吗?不然我们要上课?
Attendees 1 59:46
다음 주 화요일은 안 하기로 했잖아. 근데 목요일은 해야지 무슨 날이라고?
기술 기념일 여러분 보조기는 게 수업 합시다 아니면 보강 어떻게 해?
보강하는 게 더 좋잖아. 어때? 그냥 나와라. 어 왜 영상 강의 그러면 뭐 영상 강의도 이렇게 해야 되니까 그래도 화요일 쉬는 게 어디야?
왜 한숨 쉬어? 왜 한숨 안 쉬어? 그래도 하루 쉬잖아.
다른 데 다른 수업은 다 한댔어. 다른 얘가 과목이 5개 과목 있거든요 이번 한 게 5개 했는데 지금 5월달에 되게 다 쉬면은 나도 돌아와 다섯 개 우리 수업하자 하면 어때?
또 재밌는 거 배우는데 원래 뭐 나 자마 배우려는데 돈 주고 배워야 되는데 학교에서 배우 재밌지 뭘
出席者 1 59:46 我们不是已经说好下周二不上课吗?但是周四必须上课。什么日子?技术纪念日大家辅助是上课还是补课?补课更好不是吗?怎么样?就这样吧。哎,为什么视频讲座?那么视频讲座也要这样做,不是吗?休息一天又怎么样?为什么叹气?为什么不叹气?好歹也休息一天。其他课程都这样。有个同学有 5 门课程,现在 5 月份都休息的话,我也回来,我们上五门课,怎么样?还可以学习有趣的东西,本来就想学,要花钱学,但在学校学习不是很有趣吗?
Attendees 1 1:11:04
다 했어요? 다 했어요. 다들 오늘 여기까지 할게요.
大家 1 1:11:04 都完成了吗?都完成了。大家今天就到这里。
Attendees 1 1:11:15
다음 주 화요일에 수업 없어요 다음 주 화요일에 없어요.
下周二没有课,下周二没有课。
Attendees 1 1:12:18
주유소 할 때.
出席者 1 1:12:18 加油站时。
clovanote.naver.com