메인 화면
Next Page 버튼 클릭시
First Page 버튼 클릭시
전체 코드
package javaTest;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class app1 {
private JFrame frame;
private final JPanel pannelFirstPage = new JPanel();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
app1 window = new app1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public app1() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("Next Page");
frame.setBounds(100, 100, 955, 523);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
pannelFirstPage.setBounds(0, 0, 941, 486);
frame.getContentPane().add(pannelFirstPage);
pannelFirstPage.setLayout(null);
JButton btnNextPage = new JButton("Next Page");
btnNextPage.setBounds(339, 244, 270, 46);
btnNextPage.setFont(new Font("Arial", Font.PLAIN, 33));
pannelFirstPage.add(btnNextPage);
JPanel pannelEndPage = new JPanel();
pannelEndPage.setBounds(0, 0, 941, 486);
frame.getContentPane().add(pannelEndPage);
pannelEndPage.setLayout(null);
JButton btnFirstPage = new JButton("First Page");
btnFirstPage.setFont(new Font("Arial", Font.PLAIN, 33));
btnFirstPage.setBounds(310, 212, 404, 128);
pannelEndPage.add(btnFirstPage);
pannelEndPage.setVisible(false);
btnNextPage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pannelEndPage.setVisible(true);
pannelFirstPage.setVisible(false);
}
});
btnFirstPage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pannelFirstPage.setVisible(true);
pannelEndPage.setVisible(false);
}
});
}
}
구현 순서
frame에 Absolute layout 부여: pannel을 원하는 위치에 지정
frame에 Jpannel 삽입
pannel에 버튼 삽입
pannel, button의 variable, font, text 수정
2번쨰 pannel 생성 후 다음 페이지를 만들기 위한 배치 수정(패널이 생성되면 design상 겹침 현상 발생)
2번째 pannel의 variable, font, text 수정
Design → Source로 변경 후 전체 코드 확인
frame 관련 실행문 추가 작성
frame.setTitle("Next Page");
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setTitle("Next Page"); : frame의 title 지정
frame.setLocationRelativeTo(null); : 실행 시 초기화면 null 지정(기본값: center - 화면 중앙)
frame.setResizable(false); : 실행 후 frame의 크기 조정 불가
Next Page 버튼 클릭시 메소드 작성
pannelEndPage.setVisible(false); //: 초기화면에 EndPage가 보이지 않게
btnNextPage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pannelEndPage.setVisible(true); //: NexPage 버튼을 눌렀을떄, EndPage가 보이고
pannelFirstPage.setVisible(false); //: FirstPage는 보이지 않게
}
});
First Page 버튼 클릭시 메소드 작성
btnFirstPage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pannelFirstPage.setVisible(true); // : First Page 버튼을 눌렀을떄, First Page가 보이고
pannelEndPage.setVisible(false); // : End Page는 보이지 않게
}
});
발생한 오류와 해결방법
1) 발생한 오류
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.study
at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:895)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:791)
at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:686)
- Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.study을 통해 java.study는 금지된 패키지 이름이다.
패키지 이름에 "java."이 들어가면 안된다는 말로 판단하여 패키지 이름을 java.study → javaTest 로 변경
'Java' 카테고리의 다른 글
[Java] - toCharArray() (0) | 2022.09.11 |
---|---|
[JAVA] 예외와 예외를 처리하는 방법(try~catch) (0) | 2022.09.11 |
[JAVA] JOptionPane(Method)_1 (0) | 2022.09.05 |
[JAVA] ID와 Password 입력을 통한 로그인 구현 (0) | 2022.09.04 |
[JAVA] 간단하게 버튼만 구현한 TODOList_1 (0) | 2022.09.03 |
댓글