Tengo una aplicación Java Swing que genera diálogos secundarios con controles de texto. Y el problema es que cuando cambia el diseño del teclado en el cuadro de diálogo secundario, cambia de nuevo justo después de que se cierra el cuadro de diálogo.¿Preservar el diseño del teclado en la aplicación swing?
Lo que necesito es el diseño de la placa de contacto para permanecer después de ser cambiado, ya sea que se haya cambiado en el cuadro principal o en un cuadro secundario.
Aquí es una SSCCE que ilustra el 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);
}
}
¿Estás hablando de la disposición del teclado del sistema operativo? Un poco confundido aquí. –