Swing 4

Swing JDialog

부모창이 있다면 생성자 파라미터로 넘겨서 사용한다. 보통은 JFrame을 사용하면 충분하고 JDialog와 JFrame 두 화면에서 호출해야 한다면 생성자를 분리하는 게 편하다.추가로 전달할 값이 있다면 생성자 파라미터로 넘기는 것이 낫다. 자식창이 부모의 데이터를 호출하는 방식은 지양해야 한다. public SelectDialog(JFrame owner) { super(owner, "선택 팝업", true); //부모 타이틀 modal setLocationRelativeTo(owner); //부모 가운데 선택 버튼을 클릭했는지 구분자를 두고 JDialog로 종료되면 결과를 가져올 수 있다.dipose가 호출되었지만 JDialog에 접근할 수 있는 상태고 참조가 없어지면 GC 대상으로 처리된다..

Java/Swing 2026.03.08

Swing 먼저 알아두면 좋은 내용

- EDT(Event Dispatch Thread)Swing은 Thread Safe 하지 않다. 동시에 UI를 업데이트 하는 경우에 문제가 될 수 있기 때문에 Swing 전용 단일 Thread를 사용해서 처리한다. 무거운 작업 시에는 SwingWorker와 조합해서 사용할 수 있고, 해당 조합에서 주로 쓰게 된다.평소 코드는 EDT에서 실행되기 때문에 컴포넌트 생성, 값 변화를 할 때는 적용하지 않아도 된다.하지만 Thread를 생성해서 사용하는 경우 등은 적용을 해야 한다.특히 컴포넌트를 static 변수로 사용하면 여러 화면에서 접근해서 문제가 생길 수 있으니 사용하지 말아야 한다.SwingUtilities.invokeLater(() -> { label.setText("HI");});SwingU..

Java/Swing 2026.03.08

Swing 시작하기

직접 테스트하고 작업한 내용을 기록했다.자세한 사용법보다는 어떠한 상황에서 어떤 컴포넌트나 레이아웃을 사용했는지, 실제로 어떻게 동작하는지 정도의 기록이다.실제 사용한 것들만 작성하고, 자료가 잘 나오는 내용은 따로 정리하지 않았다. Swing으로 작업한 이유1. 무료버전인 JDK 8 202 버전을 맞춰서 사용해야 했다.2. OpenJDK라는 선택지도 있었지만, openJDK에는 JAVAFX를 기본으로 포함하지 않아 OpenJFX를 별도로 추가해야 했다.

Java/Swing 2026.03.08