I have a problem with swing that I cannot resolve since a whole day.
I want to show a popup in JWindow
if someone types into a JTextField
.
But if the layout uses a JGoodies FormLayout
with more components in one row then the display is going to be corrupt.
Do you have any ideas?
Screenshot after typing some letters into the second text field:
After editing Jans code and typing "a" sowly three times:
Code in Java:
package eu.eyan;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JWindow;
import com.jgoodies.forms.factories.CC;
import com.jgoodies.forms.layout.FormLayout;
public class Snippet {
public static void main(String[] args) {
JTextField tf = new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new FormLayout("p", "p,p,p"));
panel.add(new JTextField("before"), CC.xy(1, 1));
panel.add(tf, CC.xy(1, 2));
panel.add(new JTextField("after"), CC.xy(1, 3));
JFrame frame = new JFrame();
frame.setLayout(new FormLayout("p,p,p", "p"));
frame.add(new JLabel("bef"), CC.xy(1, 1));
frame.add(panel, CC.xy(2, 1));
frame.add(new JLabel("aft"), CC.xy(3, 1));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
JWindow popup = new JWindow();
popup.setLayout(new FormLayout("p", "p"));
JLabel l = new JLabel("popup");
popup.add(l, CC.xy(1, 1));
popup.pack();
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
popup.setVisible(true);
}
});
}
}