したがって、JPanelsを含むArrayListがあります。すべてのJPanelには、NORTHに設定されたJPanel(2つのJLabelを含む)とCENTERに設定されたJTextArea(もちろんテキストを含む)を含むBorderLayoutがあります。私の質問は、各JTextAreaのフォントサイズをどのように変更するかです。
質問する
992 次
1 に答える
5
これは、メソッドJTextArea
を介してフォントサイズを設定できるようにする簡単なコードです。これは、配列リストsetFontSize(int index, int fontSize)
のテキスト領域でのみ機能することに注意してください。panels
次の例では、テキスト領域#1と#3のフォントを変更しました(main
これを行う呼び出しのメソッドを参照してください)。
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class SimpleFrame extends JFrame {
ArrayList<JPanel> panels = new ArrayList<JPanel>();
public SimpleFrame() {
super("Simple Panel List Example");
JPanel content = (JPanel)getContentPane();
content.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
// add some panels to the array list
for(int i = 0; i < 5; i++) {
BorderLayout b = new BorderLayout();
JPanel p = new JPanel(b);
JLabel north = new JLabel("Label #"+i);
JTextArea center = new JTextArea("TextArea #"+i);
p.add("North", north);
p.add("Center", center);
panels.add(p);
content.add(p);
}
}
// change the font size of the JTextArea on panel #i
public void setFontSize(int i, int fontSize) {
JPanel p = panels.get(i);
JTextArea t = (JTextArea)((BorderLayout)p.getLayout()).getLayoutComponent("Center");
Font f = t.getFont();
Font f2 = f.deriveFont((float)fontSize);
t.setFont(f2);
}
public static void main(String[] argv) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SimpleFrame c = new SimpleFrame();
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.pack();
c.setVisible(true);
// we can change the font size using our setFontSize method
c.setFontSize(1, 8);
c.setFontSize(3, 16);
}
});
}
}
于 2012-12-31T15:23:24.737 に答える