有我簡單的程序代碼。 有四個textFields。 當光標在第一文本框的JOptionPane創建,當我按OK 光標移動到下一個字段和選項窗格再次創建 等 當光標在第四場,我點擊選項窗格OK,光標移動到第五領域「 F」。 當光標在字段中,我打印在陣列的字段的possition內容:System.out.println(「第一或第二或第三或第四」)FocusListener&JOptionPane
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Hello extends JFrame implements ActionListener, FocusListener {
public JTextField[] fields = new JTextField[4];
public JPanel panel = new JPanel();
public JTextField f = new JTextField(12);
public static void main(String[] args) {
new Hello();
}
public Hello() {
for (int i = 0; i < 4; i++) {
fields[i] = new JTextField(12);
fields[i].addFocusListener(this);
panel.add(fields[i]);
}
add(panel);
add(f);
setTitle("Hello World");
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(920, 420);
setLocation(100, 100);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
}
@Override
public void focusGained(FocusEvent fe) {
if (fe.getSource() == fields[0]) {
JOptionPane.showMessageDialog(null, "HELLO");
fields[1].requestFocus();
System.out.println("FIRST");
} else if (fe.getSource() == fields[1]) {
JOptionPane.showMessageDialog(null, "HELLO");
fields[2].requestFocus();
System.out.println("SECOND");
} else if (fe.getSource() == fields[2]) {
JOptionPane.showMessageDialog(null, "HELLO");
fields[3].requestFocus();
System.out.println("THIRD");
} else if (fe.getSource() == fields[3]) {
JOptionPane.showMessageDialog(null, "HELLO");
f.requestFocus();
System.out.println("FOURTH")
}
}
@Override
public void focusLost(FocusEvent fe) {
}
}
當沒有選項窗格,光標移到向前從第一場到第四和打印:
FIRST
SECOND
THIRD
FOURTH
但是當存在的JOptionPane 輸出爲:
FIRST
SECOND
FIRST
SECOND
THIRD
SECOND
THIRD
FOURTH
THIRD
FOURTH
FOURTH
人們可以看到第在第二場之後,它回到第一場,第三場後它回到第二位,而不是在第四場後回到第三場,然後進入第四場 。
我想知道爲什麼?我該如何解決這個問題
這就是我需要的。謝謝很多 –