У меня проблема с качелями, которую я не могу решить с целого дня. Я хочу показать всплывающее окно в JWindow
, если кто-то вводит JTextField
. Но если макет использует JGoodies FormLayout
с большим количеством компонентов в одной строке, тогда дисплей будет поврежден.JGoodies FormLayout и JWindow
Есть ли у вас идеи?
Скриншот после ввода нескольких букв во втором текстовом поле:
После редактирования Янс кода и набрав "а" sowly три раза:
код в 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);
}
});
}
}
Где упакована окно? BTW 'val panel = new JPanel();' Что такое 'val'? Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –
Упаковано: рама.pack-> для приложения popup.pack -> для всплывающего окна JWindow val: как я написал код, написан на Scala. – Andras
Кажется, что 'popup' не упакован, пока не обнаружен' KeyEvent'. Это ** должно быть упаковано до того, как оно станет видимым! –