Witajcie,
Z konieczności służbowej od niedawne eksperymentuje z programowaniem w Javie. Może będziecie w stanie pomóc mi w rozwiązaniu następującego problemu.
OPIS zagadnienia:
Piszę aplikację opartą na SWINGU która pozwoli porównać etykiety wysyłkowe z produkcyjnymi, przy czym niekoniecznie na jedną etykietę wysyłkową przypada jedna etykiety produkcyjna.
Użytkownik po wybraniu numeru wysyłki przystępuje do skanowania (tu skanowanie należy rozumieć jako wpisanie z klawiatury i zatwierdzenie enterem lub zeskanowanie czytnikiem kodów kreskowych). Ciąg danych jest skanowany do momentu napotkania znaku końca linii, po czym powinien zostać umieszczony w tablicy. Kolejność skanowania jest następująca:
skanuje pole nr etykiety
skanuje pole nr produktu
skanuje pole ilość produktu
po każdym zeskanowaniu powinna odbyć się walidacja wprowadzonych danych i jeśli są poprawne powinno nastąpić przejście do kroku następnego, w innym przypadku powtórzenie kroku.
W jednym czasie na ekranie powinno być widoczne jedno pole tekstowe do którego wprowadzane są dane.
Dla mniejszego zaciemnienia moja grafika:
URL:http://www.fotosik.pl/pokaz_obrazek/b84e217fcfc08183.html
[glowa] P R O B L E M [glowa]
Udało mi się stworzyć kod który po wprowadzeniu ciągu wypisuje ten ciąg na ekranie tak samo mogę zrobić wpisywanie danych do tablicy, ale nie potrafię go wyrzucić po za klasę anonimową (tak to się chyba nazywa) - tzn żebym operacje na tablicy z danymi mógł wykonywać poza tym obszarem.
package job;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Task2 {
public final static void main(String[] args) {
JFrame frame = new JFrame("Wpisz i enter!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 1));
final JLabel label = new JLabel("Wpisz tekst i naciśnij enter");
final JTextField textField = new JTextField("");
textField.addKeyListener(new KeyAdapter() {
String d = "";
public void keyPressed(KeyEvent key) {
String d = null;
if (new Character('\n').equals(key.getKeyChar())) {
d = textField.getText();
label.setText(d);
textField.setText("");
}
}
});
panel.add(label);
panel.add(textField);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
Powyżej zamiast tablicy zmienna d, pytanko jak mogę ją wypisać println na samym końcu aplikacji?
Próbowałem wielu sposobów włącznie z przerobienie kodu na osobną klasę ale się jeszcze gubię [rotfl] [???] i nie wiem jak wywołać keyPressed -tzn co podać za KeyEvent key?:
package job;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MojaKlasa extends KeyAdapter {
public static String keyPressed(KeyEvent key, JLabel label,
JTextField textField) {
String hd = null;
if (new Character('\n').equals(key.getKeyChar())) {
hd = hd + textField.getText();
hd = hd.toString();
label.setText(hd);
textField.setText("");
}
return hd;
}
}
Bawiłem się tym ponad 2 dni przeszperałem sporo, ale nie znalazłem rozwiązania. Będę wdzięczny za pomoc. [browar]