JTextField = new JTextField(xx);xx为可以输入的位数

解决方案 »

  1.   

    To dreammaster(天涯) 不对吧,生成的文本框还是可以输入多位。见以下程序
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;class TextTestFrame extends JFrame
       implements DocumentListener
    {  public TextTestFrame()
       {  setTitle("TextTest");
          setSize(300, 200);
          addWindowListener(new WindowAdapter()
          {  public void windowClosing(WindowEvent e)
             {  System.exit(0);
             }
          } );      Container contentPane = getContentPane();      JPanel p = new JPanel();
          hourField = new JTextField(3);
          //hourField.setColumns(3);
          //validate();
          p.add(hourField);
          hourField.getDocument().addDocumentListener(this);
          
          minuteField = new JTextField("00", 3);
          p.add(minuteField);
          minuteField.getDocument().addDocumentListener(this);
      
          contentPane.add(p, "South");
          clock = new ClockPanel();
          contentPane.add(clock, "Center");
       }
       
       public void insertUpdate(DocumentEvent e)
       {  setClock();
       }
       public void removeUpdate(DocumentEvent e)
       {  setClock();
       }
       public void changedUpdate(DocumentEvent e)
       {  
       }
       
       public void setClock()
       {  int hours 
             = Integer.parseInt(hourField.getText().trim());
          int minutes 
             = Integer.parseInt(minuteField.getText().trim());
          clock.setTime(hours, minutes);
       }
          
       private JTextField hourField;
       private JTextField minuteField;
       private ClockPanel clock;
    }class ClockPanel extends JPanel
    {  public void paintComponent(Graphics g)
       {  super.paintComponent(g); 
          g.drawOval(0, 0, 100, 100);
          double hourAngle 
             = 2 * Math.PI * (minutes - 3 * 60) / (12 * 60);
          double minuteAngle 
             = 2 * Math.PI * (minutes - 15) / 60;
          g.drawLine(50, 50, 
             50 + (int)(30 * Math.cos(hourAngle)), 
             50 + (int)(30 * Math.sin(hourAngle)));
          g.drawLine(50, 50, 
             50 + (int)(45 * Math.cos(minuteAngle)), 
             50 + (int)(45 * Math.sin(minuteAngle)));
       }
       
       public void setTime(int h, int m)
       {  minutes = h * 60 + m;
          repaint();
       }
       
       private int minutes = 0;
    }
    public class TextTest
    {  public static void main(String[] args)
       {  JFrame frame = new TextTestFrame();
          frame.show();
       }
    }
      

  2.   

    看JTextField.getText().length的长度
      

  3.   

    同意楼上的意见!
    document在有些方面很方便!
    如果单存判断输入长度可以直接在输入事件中判断JTextField.getText().length
      

  4.   

    请教 CanFly(我会飞):如何在以上程序中具体实现,多谢多谢 
      

  5.   

    这个虽然不是判断getText().length的程序!
    但是所用的事件差不多了!
    你可以改改!
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    public class keytest extends JFrame implements KeyListener
    {
    private JTextField jt=new JTextField();
    public keytest()
    {
    Container ctp=getContentPane();
    ctp.setLayout(null);
    ctp.add(jt);
    jt.setBounds(20,20,100,30);
    setTitle("keytest");
    setSize(300,300);
    jt.addKeyListener(this);
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }
    public void keyPressed(KeyEvent evt)
    {
    int keyCode =evt.getKeyCode();
    //jt.setText("");
    if (keyCode==KeyEvent.VK_RIGHT && evt.isShiftDown())
        {jt.setText("Shit+->");}
    if (keyCode==KeyEvent.VK_ENTER)  jt.setText(""); 
       //else {jt.setText(""); }
    }
    public void keyTyped(KeyEvent evt){}
    public void keyReleased(KeyEvent evt)
    {
    int keyCode =evt.getKeyCode();
    jt.setText("");
    if (keyCode==KeyEvent.VK_RIGHT && evt.isShiftDown())
        jt.setText("Shit+->");
       //else 
       
    }
    public static void main (String args[])
    {
    JFrame test =new keytest();
    test.setVisible(true);
    }
    }