我在java中創建了一個對話框,其中包含一些基本控件,我想知道如何將所有對話框的控件和字體大小更改爲雙精度,如果參數BIG_DIALOG被通過爲真實。增加所有控件的大小和字體大小
希望得到有關如何提前完成這一
感謝
我在java中創建了一個對話框,其中包含一些基本控件,我想知道如何將所有對話框的控件和字體大小更改爲雙精度,如果參數BIG_DIALOG被通過爲真實。增加所有控件的大小和字體大小
希望得到有關如何提前完成這一
感謝
如果你認真對待這樣做只爲對話框(&不影響在GUI中任何其他成分)的一些準則,你會需要遞歸走在組件層次的內容窗格中陳述(你coukd開始走高,但讓我們使這個容易)
protected void changeContent(Container parent) {
for (Component comp : parent.getComponents()) {
adjustFont(comp);
if (comp instanceof Container) {
changeContent((Container)comp);
}
}
}
protected void changeFont(Component comp) {
AffineTransformation at = AffineTransformation.getScaleInstance(2, 2);
Font font = comp.getFont().deriveFont(at);
comp.setFont(font);
}
public MyDialog() {
changeContent(getConentPane());
}
當然,你應該能夠填補參數requireme對於構造NTS &它的邏輯
UPDATE
首先道歉,我輸入的原代碼了對我的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);
}
}
我做的一件事情是注意到Font.original和Font.scaled的輸出是相同的。轉換髮生在繪畫階段,不會影響基線字體,只是它的繪製矩陣
怪異的....我實現它...它通過組件,但沒有大小變化正在發生:( – Killercode 2012-07-18 15:50:03
嘗試添加invalidate/repaint後該電話?我沒有測試代碼,並會看看,當我得到一個電腦前 – MadProgrammer 2012-07-18 19:57:36
解決不是因爲無效...只是添加了一些調整:D – Killercode 2012-07-19 15:51:58
您可以嘗試"large"
sizeVariant
,就像它們顯示here一樣。
你可以顯示創建對話框的代碼嗎? – Kostronor 2012-07-18 12:01:42
只在該對話框或整個應用程序中?無論如何,它不支持核心 - 對於想法,看看JGoodies Looks和內部使用的FontPolicy/FontSet,不確定是否有每窗口支持可用但可能添加(從未嘗試過,爲什麼你想擁有一個單一的對話框脫穎而出?) – kleopatra 2012-07-18 13:16:42
只是在這個對話框... – Killercode 2012-07-18 14:29:19