Alterar o tamanho de todos os componentes numa java.awt.Frame em JavaResizing all the components on a java.awt.Frame in Java
Quando estamos demasiado habituados a uma linguagem de programação por vezes automatizamos alguns procedimentos...
Eu vinha de um background em C# e agora estou a fazer umas tarefas em JAVA e deparei logo com algumas diferenças "subtis".
Tarefa: Alterar o tamanho de todos os componentes e respectivas fontes dentro de uma dialog composta por uma java.awt.Frame.
Depois de algumas tentativas aqui esta o código com que consegui obter resultados:
protected void changeContent(Container parent) { for (Component comp : parent.getComponents()) { changeFont(comp); comp.setMaximumSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) ); comp.setPreferredSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) ); comp.setSize( comp.getWidth()*2, comp.getHeight()*2); if (comp instanceof Container) { changeContent((Container)comp); } } }
protected void changeFont(Component comp) { AffineTransform at = AffineTransform.getScaleInstance(2, 2); if (comp.getFont() != null) { Font font = comp.getFont().deriveFont(at); comp.setFont(font); } }
No meu caso, estas duas pequenas funções resolveram os meus problemas. Como é obvio no constructor do formulário coloquei no parametro do ChangeContent() o objecto que representava a Frame.When we are used to use a programming language, sometimes we get our tasks a little bit automated.
I come from a background in C# and I am now doing some tasks in Java and I found some concept differences very quickly!
Task: Change the size of all the components inside a dialog based on a java.awt.Frame
After some failures figuring out how to reach my goal here is the best result I got.
protected void changeContent(Container parent) { for (Component comp : parent.getComponents()) { changeFont(comp); comp.setMaximumSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) ); comp.setPreferredSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) ); comp.setSize( comp.getWidth()*2, comp.getHeight()*2); if (comp instanceof Container) { changeContent((Container)comp); } } }
protected void changeFont(Component comp) { AffineTransform at = AffineTransform.getScaleInstance(2, 2); if (comp.getFont() != null) { Font font = comp.getFont().deriveFont(at); comp.setFont(font); } }
In my case, this little methods solved my problems and made my form grow like a charm! I hope this is usefull for someone else...