У меня проблема в MigLayout при явной установке позиции компонента (с ограничениями id.x и id.y) и изменении размера контейнера, в который добавлен компонент. Вот SSCCE:Проблема с MigLayout при установке позиции явно
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.miginfocom.swing.*;
public class MigClass extends JFrame {
MigClass(String title) {
super(title);
MigLayout layout = new MigLayout();
setLayout(layout);
final JPanel content = new JPanel(new MigLayout());
final JLabel l1 = new JLabel("A label");
content.add(l1, "push, center, top, id l1");
l1.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
final JTextField editor = new JTextField(5);
content.add(editor, "pos l1.x l1.y");
editor.setVisible(true);
l1.setVisible(false);
editor.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == (KeyEvent.VK_ENTER)) {
l1.setText(editor.getText());
editor.setVisible(false);
l1.setVisible(true);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
});
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
add(content, "grow, push, span");
pack();
setVisible(true);
}
public static void main(String[] args) {
MigClass gui = new MigClass(null);
}
}
JTextField
редактор не имеет права положение (оно должно перекрываться положение l1), если ограничение "push"
добавляется к метке (это происходит только тогда, когда кадр увеличивается). Как я могу решить эту проблему?
hmm ... может быть ошибкой. Любопытно: почему бы вам не использовать рост по ограничению столбца (таким образом, устраняя нажатие на ограничение компонента)? – kleopatra