Possiedo un'applicazione Java Swing che genera finestre di dialogo figlio con controlli di testo. E il problema è che quando si cambia il layout della tastiera nella finestra di dialogo figlio, esso torna indietro subito dopo la chiusura della finestra di dialogo.Preservare il layout della tastiera nell'app swing?
Quello che mi serve è che il layout della scheda rimanga dopo essere stato commutato sia che sia stato inserito nel frame principale o in un frame secondario.
Ecco uno SSCCE che illustra il problema:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InheritInputContext {
public static void main(String[] arg) {
final MainFrame mainFrame = new MainFrame();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
mainFrame.setPreferredSize(new Dimension(300, 400));
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible(true);
}
});
}
}
class MainFrame extends JFrame {
MainFrame() {
setLayout(new BorderLayout());
JTextArea textArea = new JTextArea();
add(textArea, BorderLayout.CENTER);
JButton dialogBtn = new JButton("Dialog");
add(dialogBtn, BorderLayout.SOUTH);
dialogBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ChildDialog cd = new ChildDialog(MainFrame.this);
cd.setPreferredSize(new Dimension(200, 200));
cd.setLocationRelativeTo(MainFrame.this);
cd.pack();
cd.setVisible(true);
}
});
}
}
class ChildDialog extends JDialog {
ChildDialog(Window w) {
super(w);
JTextArea textArea = new JTextArea();
getContentPane().add(textArea);
}
}
Stai parlando del layout della tastiera del sistema operativo? Un po 'confuso qui. –