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); }
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();
}
}
document在有些方面很方便!
如果单存判断输入长度可以直接在输入事件中判断JTextField.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);
}
}