음.. Connection conn을 main에서
conn = DriverManager.getConnection(.....);
이런식으로 해주어야 하나요?? 다른 곳에서 하면 안되나요??
다른곳에서 해봤는데nonstatic 어쩌구 저쩌구.. 하면서 에러 뜨던데요....
문제는 제가 회원관련 프로그램을 숙제때문에 짜고 있는데요.. 그런데
메뉴를 클릭했을때 이벤트가 발생되자나요..
그럼
private Menu memberShipMenu()
{
menu = new Menu(Member);
//---------------------------------------------------------------------------------------------------------------------------------
//회원가입을 클릭했을 때 생기는 이벤트 처리를 위하여 MenuItem을 이용해서 Menu에 MenuItem추가
//menu.add(회원 가입);
//MemberShip관련 변수들은 앞에 mb를 붙이고 MenuItem을 붙인다.
mbJoinMenuItem = new MenuItem(Join);
mbJoinMenuItem.addActionListener( this );
menu.add( mbJoinMenuItem );
//---------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
// 회원 탈퇴에 관한 것
//menu.add(회원 탈퇴);
mbSecessionMenuItem = new MenuItem(Session);
mbSecessionMenuItem.addActionListener( this );
menu.add( mbSecessionMenuItem );
//---------------------------------------------------------------------------------------------------------------------------------
//분리자를 넣는다.
menu.addSeparator();
//---------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
//menu.add(프로그램종료);
mbExitMenuItem = new MenuItem(Exit);
mbExitMenuItem.addActionListener( this );
menu.add( mbExitMenuItem );
//---------------------------------------------------------------------------------------------------------------------------------
return menu;
}
이런식으로 해서요 ( 윗부분은 여기 강좌를 보구 코딩한것입니다^^ )
메뉴를 클릭했을때 이벤트를 해당 메뉴가 listener해서요...
그 이벤트 처리를
public void actionPerformed( ActionEvent e )
{
// 회원관리에 관한 클래스 생성
if( e.getSource() == mbJoinMenuItem )
{
MemberJoin join = new MemberJoin( );
join.MakeWindow();
}
else if( e.getSource() == mbSecessionMenuItem )
{
MemberSecession session = new MemberSecession();
session.MakeWindow();
}
else if( e.getSource() == mbExitMenuItem )
{
MemberExit exit = new MemberExit();
exit.MakeWindow();
}
// 예약 메뉴에 관한 객체 생성
else if( e.getSource() == confirmCondoMenuItem )
{
ConfirmationCondo condo = new ConfirmationCondo();
condo.MakeWindow();
}
else if( e.getSource() == confirmHotelMenuItem )
{
ConfirmationHotel hotel = new ConfirmationHotel();
hotel.MakeWindow();
}
else if( e.getSource() == confirmMotelMenuItem )
{
ConfirmationMotel motel = new ConfirmationMotel();
motel.MakeWindow();
}
else if( e.getSource() == confirmPensionMenuItem )
{
ConfirmationPension pension = new ConfirmationPension();
pension.MakeWindow();
}
else if( e.getSource() == confirmViewMenuItem )
{
ConfirmationView view = new ConfirmationView();
view.MakeWindow();
}
// Help메뉴에 관한 객체 생성
else if( e.getSource() == helpInformationMenuItem )
{
HelpInformation help = new HelpInformation();
help.MakeWindow();
}
}
이런식으로 처리 했습니다.
MakeWindow()함수는 각 클래스에 있는 메소드 인데요 각 메뉴에 해당하는 dialog를 생성합니다.^^;;
그런데 문제는 각 클래스를 DB랑 연결을 시켜야하는데요.. 제가 듣기로는 Connection conn = DriverManager.getConnection(....)해서 이 conn객체를 각 클래스에 넘겨주면 된다고 하던데요 ㅠㅠ 넘길 방법이 없더라구요 ㅠㅠ
actionPeformed메소드를 public void actionPerformed( ActionEvent e, Connection conn )일케 하면 안되는 것은 알지만 혹시나 해서 해봤는데요 ㅎㅎ 방법이 없더라구요 ㅠㅠ
---------- Compile ----------
DBproject.java:39: DBproject is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
public class DBproject extends Frame implements ActionListener
^
1 error
출력 완료 (0초 경과) - 정상 종료ㅠㅠ
해결 방법 좀 알려주세요~^^;;
황소눈 2026.06.21
답변 감사드립니다^^
꽃가람 2026.06.21
아까는 시간이 없어서 못해봤는데 Connection객체를 main에서 선언한게 아니라 field로 설정해주니까 되더라구요^^;;; 바보같이 Connection객체를 메인에서 이용하다보니 에러가 생기더군요.. 그래서 안되는 줄 알았는데 생성자 함수에서 이용하니 되더라구요 ㅠㅠ 기초가 부족해서 이런 실수를...
호습다 2026.06.21
음.. 제가 말한대로 그냥 넘기면 안되던가여??? 제가 지금 잠깐 심심해서.. 스윙으로 함 문자열 넘겨보았는데. 이런건 넘어가던데... Connection 이거는 안넘어 갈려나......
다이 2026.06.21
음. 그래서.. 디비명이나.. 아이피. 포트 변경되면.. 프로퍼티 파일만 수정하면.. 되게끔 해놨어여.. 저는^^
처녀자리 2026.06.21
저도 DB연결하고. 해제하는 클래스하고.. url id pw port 이런거 저장한 프로퍼티 파일로 db 연결하거든여....
import만 시켜서.. 생성하고. 연결하면 되거든여..^^
꽃큰 2026.06.21
아.. 그리고요... Application이랑 DB랑만 연결시켜주는 클래스를 따로 만들기도 하던데 그렇게 해도 연결이 되나요?? 그 클래스의 객체를 생성해가지고 연결시키는 듯 보였는데요 ^^;;; Java에 익숙치가 않아서요^^;;
하예진 2026.06.21
근데 책에서는 멤버변수로 Connection을 선언했는데 제가 하면 안된더라구요 ㅠㅠ 뭐때문에 안되는거져?? ㅠㅠ
찬슬 2026.06.21
그런데요 문제가요.... MakeWindow의 파라미터 값으로 넘겨주려면요 저 actinoPerformed메소드를 호출해야하자나요.. 그런데 actionPerformed메소드는 이벤트가 발생될때 자동으로 호출되는데 어떻게 넘겨주죠???
Connection을 main에서 선언했는데요... 클래스 멤버변수로 선언하니까 위에처럼 에러뜨구요 ㅠㅠ
파라미 2026.06.21
흠... 제 생각도 윗분과 같네요...
그냥 커넥션을 넘겨버려주세요 -_-
슬아라 2026.06.21
dialog 생성할때 넘겨주면 안되나여???
***.MakeWindow(conn); 이런식으로.. 음.. 안될려나?? 메소드에서는
public void MakeWindow(Connection conn){
..................
}
이런식으로... 그냥.. 함.. 달아봤어여..^^