Java Swing Logowanie JFrame

0

Mam problem z przeniesieniem nazwy podanej przez użytkownika do drugiego okienka (klasa login1). Oto część kodu gdzie użytkownik podaje dane logowania i łączy się z baza sql.

btlogin.addActionListener(new ActionListener()
				{DB db = new DB();
					public void actionPerformed(ActionEvent arg0) {
						try {Class.forName("com.mysql.jdbc.Driver");
						Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
						Statement stmt = con.createStatement();
						String sql ="Select * from tblogin where UserName ='"+user.getText()+"'and Password='"+pass.getText().toString()+"'"; 
						ResultSet rs = stmt .executeQuery(sql);
						show.setSelected(false);
						us = user.getText();
												
						if(rs.next())
							{
							JOptionPane.showMessageDialog(null, "Login succes..."+user.getText());
							login.this.dispose();
							login1 l1 = new login1();
							l1.setVisible(true);
						    }
							
						else
							JOptionPane.showMessageDialog(null,"Incorect");
						}catch(Exception e) {System.out.print(e);
						}
						
					}
					
			
				});

	}
	


1

To jest dramat :(
Nie wpycha się takiej logiki gdzieś do anonimowego action listenera, przecież to masakra jakaś. Zrób tam porządne MVC, zrób porządny Model który obsługuje logikę aplikacji (jak to twoje logowanie) i tylko używaj go w takich miejscach! Przecież jak ten program urośnie jeszcze troszeczkę, to już nic nie będzie się dało tam ogarnać.

Ad wyjściowego pytania, znów pojawia się kwestia nieznajomości MVC/MVP. Widoki (czyli twoje okienka) ze sobą nie rozmawiają! Klikasz w guzik, akcja idzie do kontrolera/prezentera, on pobiera potrzebne dane z Widoku (np. ten twój login wpisany przez usera) i wysyła to do Modelu, a potem odbiera wynik i wysyła do odpowiedniego Widoku.

0

nie bardzo wiem o co ci chodzi ? Mógłbyś mi to jakoś naprostować , wytłumaczyć ? I jak te dane mogę tam przerzucić ?

1

Shalomowi chodzi o to, że musisz zacząć od nowa, ale tym razem z głową.
Jak dodasz kolejne funkcjonlaności to sam się pogubisz w tym kodzie i nie będziesz wiedział co i jak.
Wrzucanie do listenera łączenia z bazą danych to nie jest najlepsze wyjście. Musisz to wydzielić w inne miejsce.

Nie zweryfikowałem tego kodu w 100% bo Swing to nie moja działka, ale jest on na pewno lepszy i łatwiejszy w rozwijaniu niż Twój.

https://medium.com/@ssaurel/learn-to-make-a-mvc-application-with-swing-and-java-8-3cd24cf7cb10

1

@kixe52 wygląda ok, tylko trzeba pamiętać, że operacje na logice domenowej ladują wszystkie w Model. @sssebastianb5 masz tam pokazany bardzo dobry przykład jak to powinno wyglądać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1