To może napisz wam jaką aplikację chce napisać, bo być może podacie mi lepsze rozwiązanie na napisanie tej aplikacji.
A więc chce napisać aplikację w które użytkownik loguję się za pomocą loginu i hasła i gdy wpiszę poprawne dane logowania to ukazuję się okienko w którym użytkownik wybiera plik o nazwie log_2014-12-06-16-14.txt, w którym podczas grania w grę Euro Truck Simulator 2 są generowane linijki, które zawierają informację dotyczące grania np. prędkość jazdy, spalanie, przebieg itd. Chce aby te linijki były dzielone po znakach "|" oraz "#", następnie chce ten plik odczytywać na okrągło dopóki gracz nie wyłączy gry ponieważ wtedy już nie są generowane żadne linijki w tym pliku. Podczas wczytywania chce te podzielone dane umieszczać w JTable w odpowiednich kolumnach tzn prędkość w kolumnie prędkość, spalanie w kolumnie spalanie. Następie chce wybrać odpowiednie dane z JTable i wysyłać je do bazy danych do tabeli o nazwie takiej samej jak login czyli wybieram np. kolumny prędkość, spalanie i wysyłam je do tej tabeli do kolumn prędkość i spalanie oraz chce aby podczas każdego nowo utworzonego rekordu była wpisywana data do kolumny data oraz godzina do kolumny godzina, ponieważ dzięki temu będę mógł napisać stronę w PHP która odczytuję i prezentuję te dane zebrane od wielu użytkowników na stronie. Poniżej przedstawiam kod tej aplikacji, który już napisałem
Kod pliku o nazwie MainPanel.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
class MainPanel extends JFrame implements ActionListener {
ExternalPanel1 ep1 = new ExternalPanel1();
JPanel p1 = new JPanel(new GridBagLayout());
JButton loginButton = new JButton("Zaloguj się");
JButton infoButton = new JButton("O Programie");
JLabel labelUsername = new JLabel("Wpisz login: ");
JLabel labelPassword = new JLabel("Wpisz hasło: ");
JTextField textUsername = new JTextField(20);
JPasswordField fieldPassword = new JPasswordField(20);
Connection conn;
Statement stat;
ResultSet rs;
String uname;
String pwd;
String l;
String p;
boolean wynik;
boolean wynik2;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainPanel().setVisible(true);
}
});
}
public MainPanel() {
super("GoldenLines ASOK TelemetryApp");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setPreferredSize(new Dimension(320, 160));
//setResizable(false);
setLocationRelativeTo(null);
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.WEST;
c.insets = new Insets(5, 5, 5, 5);
c.gridx = 0;
c.gridy = 0;
p1.add(labelUsername, c);
c.gridx = 1;
c.gridy = 0;
p1.add(textUsername, c);
c.gridx = 0;
c.gridy = 1;
p1.add(labelPassword, c);
c.gridx = 1;
c.gridy = 1;
p1.add(fieldPassword, c);
c.gridx = 0;
c.gridy = 2;
p1.add(loginButton, c);
loginButton.addActionListener(this);
c.gridx = 1;
c.gridy = 2;
p1.add(infoButton, c);
infoButton.addActionListener(this);
add(p1);
p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Panel Główny"));
pack();
}
public boolean Connect() {
try {
Class.forName("com.mysql.jdbc.Driver");
//System.out.println("Steronwik OK");
}
catch (ClassNotFoundException e) {
System.err.println("Brak sterownika JDBC");
e.printStackTrace();
return false;
}
try {
conn = DriverManager.getConnection("jdbc:mysql://host_name/table_name", "user", "password");
//System.out.println("Połączono");
checkLogin();
}
catch (SQLException e) {
System.err.println("Problem z otwarciem polaczenia");
e.printStackTrace();
return false;
}
return true;
}
public boolean checkLogin() {
char[] temp_pwd=fieldPassword.getPassword();
pwd=null;
pwd=String.copyValueOf(temp_pwd);
uname = textUsername.getText();
//System.out.println(" " + pwd + " " + uname);
try {
stat = conn.createStatement();
rs = stat.executeQuery("SELECT login, password FROM aso_users where login='"+uname+"' AND password='"+pwd+"'");
while (rs.next()) {
l = rs.getString("login");
p = rs.getString("password");
//System.out.println("LoginOK: "+l);
//System.out.println("HasłoOK: "+p);
}
}
catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
public void closeConnect() {
try {
conn.close();
}
catch (SQLException e) {
System.err.println("Problem z zamknieciem polaczenia");
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object akcja = e.getSource();
if(akcja == loginButton) {
Connect();
if (Connect() == true && checkLogin() == true) {
if (l.equals(uname) == true && p.equals(pwd) == true) {
//closeConnect();
ep1.setVisible(true);
setVisible(false);
}
}
}
else if (akcja == infoButton) {
JOptionPane.showMessageDialog (null, "Autor: \nWersja: 0.1", "O programie", JOptionPane.INFORMATION_MESSAGE);
}
}
}
Kod pliko o nazwie ExternalPanel1.java
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class ExternalPanel1 extends JFrame implements ActionListener {
JPanel p1 = new JPanel(new GridBagLayout());
JButton logoutButton = new JButton("Wyjście");
JButton importButton = new JButton("Wczytaj plik telemetrii");
FileDialog fd = new FileDialog(this, "Choose a file", FileDialog.LOAD);
String katalog;
String plik;
JLabel fileLabel = new JLabel("Wybrano plik:");
JLabel directoryfileLabel = new JLabel("W katalogu:");
public ExternalPanel1() {
super("GoldenLines ASO TelemetryApp");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setPreferredSize(new Dimension(440, 200));
//setResizable(false);
setLocationRelativeTo(null);
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.WEST;
c.insets = new Insets(5, 5, 5, 5);
c.gridx = 0;
c.gridy = 1;
p1.add(fileLabel, c);
c.gridx = 0;
c.gridy = 2;
p1.add(directoryfileLabel, c);
c.gridx = 0;
c.gridy = 3;
p1.add(importButton, c);
importButton.addActionListener(this);
c.gridx = 0;
c.gridy = 4;
p1.add(logoutButton, c);
logoutButton.addActionListener(this);
add(p1);
p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Panel "));
pack();
}
public void wczytajPlik() {
fd.setVisible(true);
katalog = fd.getDirectory();
plik = fd.getFile();
//fileLabel.setText("Wybrano plik: " + plik);
//directoryfileLabel.setText("W katalogu: " + katalog);
if (plik == null) {
JOptionPane.showMessageDialog (null, "Nie wybrano pliku", "Błąd", JOptionPane.INFORMATION_MESSAGE);
}
else {
wypiszDanezpliku();
}
}
public void wypiszDanezpliku() {
boolean firstLine = true;
try
{
Scanner sc = new Scanner(fd.getFiles()[0]);
while(sc.hasNextLine())
{
if(firstLine)
{
sc.nextLine();
firstLine = false;
}
else
{
Scanner line = new Scanner(sc.nextLine());
line.useDelimiter("\\|");
while(line.hasNext())
{
System.out.println(line.next());
}
}
}
}
catch(Exception e)
{
System.out.println(e);
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object akcja = e.getSource();
if(akcja == logoutButton) {
System.exit(0);
}
if(akcja == importButton) {
wczytajPlik();
}
}
}
I stąd moje pytanie czy da się jakoś tą aplikację lepiej napisać?