gpt4 book ai didi

java - 更改 Java swing 应用程序中的字体样式、大小

转载 作者:行者123 更新时间:2023-12-02 09:06:41 39 4
gpt4 key购买 nike

我正在使用 java swing 编写一个电子邮件应用程序。我希望用户能够在编写电子邮件时更改字体,但我不知道该怎么做。我创建了一个包含所有字体的 JComboBox。

我想我应该使用 getSelectedItem() 并向 JComboBox 添加一个 actionListener 来将此信息传递给 JTextArea?或者还有其他方法吗?这是我的代码:

String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

JComboBox comboBox = new JComboBox(fonts);// create a combo box with the array
comboBox.setFont(new Font("Times New Roman", Font.PLAIN, 12));// set the font
comboBox.setBounds(21, 6, 193, 25);// set size and location
add(comboBox);

如何让所有文本字段根据组合框中所选项目更改字体?

最佳答案

在这里您可以找到您所要求的工作示例(如果我理解正确的话),嵌入在一个简单的 main 方法中。

为了简单起见,我只使用了一个组合框来选择字体名称,但如果可以添加另外两个组合以使字体大小和样式(粗体、普通、斜体)也可以选择,那就太好了。

基本上是的,最常见的方法是将actionListener绑定(bind)到comboBox,以便在comboBox有用户交互时更改字体。当然,这不是唯一的方法,您甚至可以监听按下的键盘按键来触发操作,或者实现其他方式来识别用户更改字体的意图,但据我所知,我在例子是最简单的方法。

package fontchooser;

import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ComboFont {

// Put this in other two combo-boxes if you want to make these selectable by user
public static int default_size = 16;
public static int default_style = Font.PLAIN;

public static void main(String[] args) {
String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

GridBagLayout layout = new GridBagLayout();
layout.columnWidths = new int[] {400};
layout.rowHeights = new int[] {100,300};

JFrame container = new JFrame();
container.setLayout(layout);
container.setBounds(150,150,400,400);
container.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JComboBox<String> comboFontNames = new JComboBox<String>(fonts);
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(textArea);

GridBagConstraints comboContraints = new GridBagConstraints();
comboContraints.gridx = 0;
comboContraints.gridy = 0;
// This only set font to display on combo
comboFontNames.setFont(new Font("Times New Roman", Font.PLAIN, 12));
container.add(comboFontNames, comboContraints);

GridBagConstraints scrollerContraints = new GridBagConstraints();
scrollerContraints.gridx = 0;
scrollerContraints.gridy = 1;
scrollerContraints.gridwidth = 400;
scrollerContraints.fill = GridBagConstraints.BOTH;
container.add(scrollPane, scrollerContraints);

// Variant of action listener with lambda (since java 8)
comboFontNames.addActionListener((e) -> {

String selectedFamilyName = (String)comboFontNames.getSelectedItem();
Font selectedFont = new Font(selectedFamilyName, default_style, default_size);

textArea.setFont(selectedFont);
textArea.repaint();
});

container.setVisible(true);
}
}

我希望这就是您所需要的!再见

阿莱西奥

关于java - 更改 Java swing 应用程序中的字体样式、大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763059/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com