我有一個帶有文本「輸入鼠標」的JLabel。只要用戶在它上面輸入鼠標,我想要出現一個JTextField,以便用戶可以搜索一些東西。如果鼠標被移除,則以前的JLabel必須再次出現。我使用:JLabel - 鼠標輸入到JTextField的更改
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class ML extends JFrame {
private static final long serialVersionUID = 1L;
public ML() {
GridLayout gl = new GridLayout(1, 2);
setLayout(gl);
JPanel jp = new JPanel();
CardLayout cl = new CardLayout();
jp.setLayout(cl);
JPanel jp1 = new JPanel();
JLabel jl = new JLabel("Enter mouse!");
jp1.add(jl);
JPanel jp2 = new JPanel();
JTextField jtf = new JTextField(20);
jp2.add(jtf);
jp.add(jp1, "1");
jp.add(jp2, "2");
cl.show(jp, "1");
jp.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent evt)
{
cl.show(jp, "2");
}
public void mouseExited(MouseEvent evt)
{
cl.show(jp, "1");
}
});
add(jp);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.pack();
this.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ML();
}
});
}}
一切工作就好了,但是當我將鼠標懸停在一個JLabel「進入鼠標」,它有點錯誤/這和JTextField中之間閃爍。爲什麼是這樣,我能做些什麼來解決它? Ty
我會用,用真/假以JTextField.setEnabled而不是CardLayout – mKorbel