Java 增加所有控件的大小和字体大小

Java 增加所有控件的大小和字体大小,java,swing,Java,Swing,我正在用java创建一个对话框,其中包含一些基本控件,我想知道如果参数BIG_dialog被传递为true,如何将所有对话框控件的大小和字体大小更改为double 希望得到一些关于如何实现这一点的指导 提前感谢如果您真的只想在对话框中这样做(&不影响GUI中的任何其他组件),您需要递归地遍历内容窗格中的组件层次结构(您可以从更高的位置开始,但让我们简化) 当然,您应该能够满足构造函数的参数要求&它的逻辑 更新 首先抱歉,我在ipad上输入了原始代码,没有自动完成功能,因此AffineTransf

我正在用java创建一个对话框,其中包含一些基本控件,我想知道如果参数BIG_dialog被传递为true,如何将所有对话框控件的大小和字体大小更改为double

希望得到一些关于如何实现这一点的指导


提前感谢

如果您真的只想在对话框中这样做(&不影响GUI中的任何其他组件),您需要递归地遍历内容窗格中的组件层次结构(您可以从更高的位置开始,但让我们简化)

当然,您应该能够满足构造函数的参数要求&它的逻辑

更新

首先抱歉,我在ipad上输入了原始代码,没有自动完成功能,因此
AffineTransformation
应该是
AffineTransform

我把这些放在一起,得到了非常棒的结果。我可以在自己的代码中保留这个想法,谢谢

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.geom.AffineTransform;

/**
 *
 * @author swhitehead
 * /
public class TestFrame extends javax.swing.JFrame {

    private float scale = 1f;

    /**
     * Creates new form TestFrame    
     */
public TestFrame() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;

    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jScrollPane1 = new javax.swing.JScrollPane();
    jList1 = new javax.swing.JList();
    jPanel1 = new javax.swing.JPanel();
    btnUp = new javax.swing.JButton();
    btnDown = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.GridBagLayout());

    jLabel1.setText("Hello world!");
    getContentPane().add(jLabel1, new java.awt.GridBagConstraints());

    jTextField1.setColumns(12);
    jTextField1.setText("Say something");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.PAGE_START;
    getContentPane().add(jTextField1, gridBagConstraints);

    jList1.setModel(new javax.swing.AbstractListModel() {
        String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
        public int getSize() { return strings.length; }
        public Object getElementAt(int i) { return strings[i]; }
    });
    jScrollPane1.setViewportView(jList1);

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.gridheight = 2;
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
    getContentPane().add(jScrollPane1, gridBagConstraints);

    jPanel1.setLayout(new java.awt.GridBagLayout());

    btnUp.setText("Up");
    btnUp.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnUpActionPerformed(evt);
        }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 3;
    jPanel1.add(btnUp, gridBagConstraints);

    btnDown.setText("Down");
    btnDown.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnDownActionPerformed(evt);
        }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 3;
    jPanel1.add(btnDown, gridBagConstraints);

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.gridwidth = 2;
    getContentPane().add(jPanel1, gridBagConstraints);

    pack();
}// </editor-fold>

private void btnUpActionPerformed(java.awt.event.ActionEvent evt) {

    scale += 0.1;
    changeContent(getContentPane());

    invalidate();
    repaint();

}

private void btnDownActionPerformed(java.awt.event.ActionEvent evt) {

    scale -= 0.1;
    if(scale <= 0) scale = 0.1f;

    changeContent(getContentPane());

    invalidate();
    repaint();

}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /*
     * Set the Nimbus look and feel
     */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the
     * default look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
     * Create and display the form
     */
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new TestFrame().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JButton btnDown;
private javax.swing.JButton btnUp;
private javax.swing.JLabel jLabel1;
private javax.swing.JList jList1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField1;
// End of variables declaration

protected void changeContent(Container parent) {
    for (Component comp : parent.getComponents()) {
        adjustFont(comp);
        if (comp instanceof Container) {
            changeContent((Container) comp);
        }
    }
}

protected void adjustFont(Component comp) {
    AffineTransform at = AffineTransform.getScaleInstance(scale, scale);
    Font font = comp.getFont();
    System.out.println("Font.orignal = " + font.getSize());
    font = font.deriveFont(at);
    System.out.println("Font.scaled = " + font.getSize());
    comp.setFont(font);
}
}
/*
*要更改此模板,请选择工具|模板
*然后在编辑器中打开模板。
*/
包装试验;
导入java.awt.Component;
导入java.awt.Container;
导入java.awt.Font;
导入java.awt.geom.AffineTransform;
/**
*
*@author swhitehead
* /
公共类TestFrame扩展了javax.swing.JFrame{
专用浮标=1f;
/**
*创建新表单TestFrame
*/
公共测试框架(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有组件(){
java.awt.GridBagConstraints GridBagConstraints;
jLabel1=newjavax.swing.JLabel();
jTextField1=newjavax.swing.JTextField();
jScrollPane1=newjavax.swing.JScrollPane();
jList1=newjavax.swing.JList();
jPanel1=newjavax.swing.JPanel();
btnUp=newjavax.swing.JButton();
btnDown=newjavax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(新java.awt.GridBagLayout());
setText(“你好,世界!”);
getContentPane().add(jLabel1,new java.awt.GridBagConstraints());
jTextField1.setColumns(12);
jTextField1.setText(“说点什么”);
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=1;
gridBagConstraints.anchor=java.awt.gridBagConstraints.PAGE_START;
getContentPane().add(jTextField1,gridBagConstraints);
setModel(新的javax.swing.AbstractListModel(){
字符串[]字符串={“项目1”、“项目2”、“项目3”、“项目4”、“项目5”};
public int getSize(){return strings.length;}
公共对象getElementAt(inti){返回字符串[i];}
});
jScrollPane1.setViewportView(jList1);
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=1;
gridBagConstraints.gridy=0;
gridBagConstraints.gridheight=2;
gridBagConstraints.fill=java.awt.gridBagConstraints.BOTH;
getContentPane().add(jScrollPane1,gridBagConstraints);
setLayout(新java.awt.gridbagloayout());
btnUp.setText(“Up”);
addActionListener(新的java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的btnUpActionPerformed(evt);
}
});
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=3;
jPanel1.add(btnUp、gridBagConstraints);
btnDown.setText(“向下”);
addActionListener(新的java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的Btnown操作(evt);
}
});
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=1;
gridBagConstraints.gridy=3;
jPanel1.add(btnDown,gridBagConstraints);
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridx=0;
gridBagConstraints.gridy=2;
gridBagConstraints.gridwidth=2;
getContentPane().add(jPanel1,gridBagConstraints);
包装();
}// 
私有void btnUpActionPerformed(java.awt.event.ActionEvent evt){
标度+=0.1;
changeContent(getContentPane());
使无效();
重新油漆();
}
私有void BtnowActionPerformed(java.awt.event.ActionEvent evt){
刻度-=0.1;

如果(scale如果您真的只想在对话框中执行此操作(&不影响GUI中的任何其他组件),则需要递归地遍历内容窗格中的组件层次结构(您可以从更高的级别开始,但让我们简化此操作)

当然,您应该能够满足构造函数的参数要求&它的逻辑

更新

首先抱歉,我在ipad上输入了原始代码,没有自动完成功能,因此
AffineTransformation
应该是
AffineTransform

我把这些放在一起,得到了非常棒的结果。我可能会在我自己的代码中使用这个想法,谢谢

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.geom.AffineTransform;

/**
 *
 * @author swhitehead
 * /
public class TestFrame extends javax.swing.JFrame {

    private float scale = 1f;

    /**
     * Creates new form TestFrame    
     */
public TestFrame() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;

    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jScrollPane1 = new javax.swing.JScrollPane();
    jList1 = new javax.swing.JList();
    jPanel1 = new javax.swing.JPanel();
    btnUp = new javax.swing.JButton();
    btnDown = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.GridBagLayout());

    jLabel1.setText("Hello world!");
    getContentPane().add(jLabel1, new java.awt.GridBagConstraints());

    jTextField1.setColumns(12);
    jTextField1.setText("Say something");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.PAGE_START;
    getContentPane().add(jTextField1, gridBagConstraints);

    jList1.setModel(new javax.swing.AbstractListModel() {
        String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
        public int getSize() { return strings.length; }
        public Object getElementAt(int i) { return strings[i]; }
    });
    jScrollPane1.setViewportView(jList1);

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.gridheight = 2;
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
    getContentPane().add(jScrollPane1, gridBagConstraints);

    jPanel1.setLayout(new java.awt.GridBagLayout());

    btnUp.setText("Up");
    btnUp.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnUpActionPerformed(evt);
        }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 3;
    jPanel1.add(btnUp, gridBagConstraints);

    btnDown.setText("Down");
    btnDown.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnDownActionPerformed(evt);
        }
    });
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 3;
    jPanel1.add(btnDown, gridBagConstraints);

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.gridwidth = 2;
    getContentPane().add(jPanel1, gridBagConstraints);

    pack();
}// </editor-fold>

private void btnUpActionPerformed(java.awt.event.ActionEvent evt) {

    scale += 0.1;
    changeContent(getContentPane());

    invalidate();
    repaint();

}

private void btnDownActionPerformed(java.awt.event.ActionEvent evt) {

    scale -= 0.1;
    if(scale <= 0) scale = 0.1f;

    changeContent(getContentPane());

    invalidate();
    repaint();

}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /*
     * Set the Nimbus look and feel
     */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the
     * default look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TestFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
     * Create and display the form
     */
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new TestFrame().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JButton btnDown;
private javax.swing.JButton btnUp;
private javax.swing.JLabel jLabel1;
private javax.swing.JList jList1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField1;
// End of variables declaration

protected void changeContent(Container parent) {
    for (Component comp : parent.getComponents()) {
        adjustFont(comp);
        if (comp instanceof Container) {
            changeContent((Container) comp);
        }
    }
}

protected void adjustFont(Component comp) {
    AffineTransform at = AffineTransform.getScaleInstance(scale, scale);
    Font font = comp.getFont();
    System.out.println("Font.orignal = " + font.getSize());
    font = font.deriveFont(at);
    System.out.println("Font.scaled = " + font.getSize());
    comp.setFont(font);
}
}
/*
*要更改此模板,请选择工具|模板
*然后在编辑器中打开模板。
*/
包装试验;
导入java.awt.Component;
导入java.awt.Container;
导入java.awt.Font;
导入java.awt.geom.AffineTransform;
/**
*
*@author swhitehead
* /
公共类TestFrame扩展了javax.swing.JFrame{
专用浮标=1f;
/**
*创建新表单TestFrame
*/
公共测试框架(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有无效初始比较