본문 바로가기
Java

[JAVA] 버튼을 누르면 다음 페이지로 넘어가는 NextPage

by bkuk 2022. 9. 9.

메인 화면

 

 

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 로 변경


댓글