package test;
import java.awt.BorderLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import mode.StaMode;
import mode.StaTable;
import po.Sta;
public class Test extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField jtf;
public static void main(String[] args) {
new Test().setVisible(true);
}
StaMode tm;
StaTable tb;
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 400);
setLocationRelativeTo(null);
getContentPane().setLayout(null);
jtf = new JTextField();
jtf.setBounds(69, 42, 240, 30);
getContentPane().add(jtf);
final JPanel p = new JPanel();
p.setBounds(69, 70, 240, 210);
getContentPane().add(p);
p.setLayout(new BorderLayout(0, 0));
tm = new StaMode(new HashSet<Sta>());
tb = new StaTable(tm);
tb.setHiddenCell(0);
tb.setRowHeight(20);
tb.setTableHeader(null);//设置列名隐藏
JScrollPane scrollPane_1 = new JScrollPane(tb);
p.add(scrollPane_1, BorderLayout.CENTER);
JPanel panel_1 = new JPanel();
panel_1.setBounds(35, 96, 340, 50);
getContentPane().add(panel_1);
panel_1.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
panel_1.add(scrollPane, BorderLayout.CENTER);
JTextArea textArea = new JTextArea();
scrollPane.setViewportView(textArea);
textArea.setText("帝国大厦二十八楼装修的富丽堂皇的会议大厅内,"
+ "神情严肃的军委首长正在看大屏幕上花都市的地图,参加这次会议的人数并不多," + "可全都是花都市政界的顶尖人物。"
+ "市委书记林一来也在看地图,旁边的市长张学锋低声说:" + "“林书记,这一次上边给我们的压力可称‘巨大’啊。");
textArea.setLineWrap(true);
p.setVisible(false);
ss = new HashSet<Sta>();
for (int i = 0; i < 1000; i++) {
ss.add(new Sta(i, i + ""));
}
jtf.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
p.setVisible(false);
}
public void focusGained(FocusEvent e) {
}
});
jtf.getDocument().addDocumentListener(new DocumentListener() {
private String str;
public void removeUpdate(DocumentEvent e) {
valueChange();
}
public void insertUpdate(DocumentEvent e) {
valueChange();
}
@Override
public void changedUpdate(DocumentEvent e) {
System.out.println("changeUpdae");
}
private void valueChange(){
p.setVisible(!jtf.getText().equals(""));
str = jtf.getText();
if(!str.equals("")){
getSta(str);
System.out.println(str);
tm.update(s1);
tb.repaint();
tb.updateUI();
}
}
});
jtf.addKeyListener(new KeyListener() {
private String text="1";//选择框旧值
private int key;
private int row;
private int max;
private Sta selectSta;
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
key = e.getKeyCode();
max = tb.getRowCount();
System.out.println("-"+text+"-"+jtf.getText());
if(!text.equals(jtf.getText())){
tb.clearSelection();
}
text = jtf.getText();
if(max<=0){
tb.clearSelection();
return;
}else{
row = tb.getSelectedRow();
}
if(key==KeyEvent.VK_DOWN){
if(row+1<max){
row++;
}
tb.getSelectedRow();
tb.changeSelection(row, 0, false, false);
}else if(key == KeyEvent.VK_UP){
if(row>=1){
row--;
}
tb.getSelectedRow();
tb.changeSelection(row, 0, false, false);
}else if(key == KeyEvent.VK_ENTER){
if(row!=-1){
selectSta = (Sta) tm.getValueAt(row, 0);
System.out.println(selectSta.getId());
jtf.setText(selectSta.getId()+"");
p.setVisible(false);
}
}
}
});
}
private Set<Sta> ss = new HashSet<Sta>();
private Set<Sta> s1 = new HashSet<Sta>();
private int x;
private Set<Sta> getSta(String str){
s1.clear();
x=0;
for (Iterator<Sta> it = ss.iterator(); it.hasNext();) {
Sta s = (Sta) it.next();
if(s.getName().contains(str)){
s1.add(s);
x++;
}
if(x==10){
break;
}
}
return s1;
}
}