Co trzeba zrobić w Text Field można było wpisać tylko liczby (od 1 do 9)?
0
0
Użyć javax.swing.JFormattedTextField
.
0
Mógłby ktoś to napisać dokładniej
0
Tu masz co nieco: http://4programmers.net/Forum/Java/169732-textfield_-_tylko_cyfry_z_zakresu_1-9
Poczytaj o JFormattedTextField.setFormatter()
, javax.swing.text.NumberFormatter
, javax.swing.text.MaskFormatter
.
0
Witam
Ja to inaczej rozwiązałem bez używania JFormattedTextField.setFormatter(), javax.swing.text.NumberFormatter, javax.swing.text.MaskFormatter.
<code - java>
/**
-
@Author Piotr
*/
public class Textod1do9 {
Textod1do9() {
initComp();
}
private void initComp() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTextField text = new JTextField("");
text.setPreferredSize(new Dimension(200,30));
text.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
textKeyTyped(e);
}
@Override
public void keyPressed(KeyEvent e) {
textKeyPressed(e);
}
});
panel.add(text);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setSize(250, 150);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
Textod1do9 te = new Textod1do9();
}
});
}
private boolean czyLiczba(char z){
if (z >= '0' && z <= '9')
return true;
return false;
}
private void textKeyTyped(KeyEvent e) {
if (!czyLiczba(e.getKeyChar()))
e.consume();
}
private void textKeyPressed(KeyEvent e) {
if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_V)
{
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
String schowek = "";
try {
schowek = (String) clip.getData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException ex) {
System.out.println("To nie jest string");
}
catch (IOException ex) {
System.out.println("Błąd");
}
for (int i = 0; i < schowek.length(); i++)
if (!czyLiczba(schowek.charAt(i))){
System.out.println(schowek.charAt(i));
e.consume();
break;
}
}
}
}
</code - java>
Zwyczajnie nie znam klas które wymienił kolega @iooi ale warto poczytać i dowiedzieć się czegoś nowego.
Może moje rozwiązanie to droga trochę dłuższa ale też działa.
Pozdrawiam