我想在Java中创建一个文本编辑器。这是我到目前为止写的:
package com.thundercrust.applications;
import java.awt.BorderLayout;
public class TextEditor implements ActionListener{
private static String[] fontOptions = {"Serif", "Agency FB", "Arial", "Calibri", "Cambrian", "Century Gothic", "Comic Sans MS", "Courier New", "Forte", "Garamond", "Monospaced", "Segoe UI", "Times New Roman", "Trebuchet MS", "Serif"};
private static String[] sizeOptions = {"8", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28"};
ImageIcon newIcon = new ImageIcon("res/NewIcon.png");
ImageIcon saveIcon = new ImageIcon("res/SaveIcon.png");
ImageIcon openIcon = new ImageIcon("res/OpenIcon.png");
ImageIcon fontIcon = new ImageIcon("res/FontIcon.png");
ImageIcon changeFontIcon = new ImageIcon("res/ChangeFontIcon.png");
JButton New = new JButton(newIcon);
JButton Save = new JButton(saveIcon);
JButton Open = new JButton(openIcon);
JButton changeFont = new JButton(changeFontIcon);
JLabel fontLabel = new JLabel(fontIcon);
JLabel fontLabelText = new JLabel("Font: ");
JLabel fontSizeLabel = new JLabel("Size: ");
JComboBox <String> fontName = new JComboBox<>(fontOptions);
JComboBox <String> fontSize = new JComboBox<>(sizeOptions);
JToolBar tool = new JToolBar();
JTextArea texty = new JTextArea();
JScrollPane scroll = new JScrollPane(texty);
private static final int WIDTH = 1366;
private static final int HEIGHT = WIDTH / 16 * 9;
private static String name = "Text Editor";
private static JFrame frame = new JFrame();
public void Display() {
frame.setTitle(name);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
New.addActionListener(this);
New.setToolTipText("Creates a new File");
Save.addActionListener(this);
Save.setToolTipText("Saves the current File");
Open.addActionListener(this);
Open.setToolTipText("Opens a file");
changeFont.addActionListener(this);
changeFont.setToolTipText("Change the Font");
fontLabel.setToolTipText("Font");
fontLabelText.setToolTipText("Set the kind of Font");
fontSizeLabel.setToolTipText("Set the size of the Font");
tool.add(New);
tool.addSeparator();
tool.add(Save);
tool.addSeparator();
tool.add(Open);
tool.addSeparator();
tool.addSeparator();
tool.addSeparator();
tool.add(fontLabel);
tool.addSeparator();
tool.add(fontLabelText);
tool.add(fontName);
tool.addSeparator();
tool.add(fontSizeLabel);
tool.add(fontSize);
tool.addSeparator();
tool.add(changeFont);
JPanel pane = new JPanel();
pane.setLayout(new BorderLayout());
pane.add(tool, "North");
pane.add(scroll, "Center");
frame.setContentPane(pane);
}
public static void main(String args[]) {
TextEditor editor = new TextEditor();
editor.Display();
}
public void actionPerformed(ActionEvent evt) {
String fontNameSet;
String fontSizeSetTemp;
int fontSizeSet;
Object source = evt.getSource();
if(source == New) {
texty.setText("");
}
else if(source == changeFont) {
fontNameSet = (String) fontName.getSelectedItem();
fontSizeSetTemp = (String) fontSize.getSelectedItem();
fontSizeSet = Integer.parseInt(fontSizeSetTemp);
System.out.println(fontNameSet + fontSizeSet);
scroll.setFont(new Font(fontNameSet, fontSizeSet, Font.PLAIN));
}
}
}
我的问题是为JTextArea
设置字体。当我在实际程序上单击change eFont
按钮时,什么也没发生。我该怎么办?
new Font(fontNameSet, fontSizeSet, Font.PLAIN)
这是错误的参数顺序。应该是:
new Font(fontNameSet, Font.PLAIN, fontSizeSet)
此外,如评论中所述:
scroll.setFont(new Font(fontNameSet, fontSizeSet, Font.PLAIN));
应该是:
texty.setFont(new Font(fontNameSet, Font.PLAIN, fontSizeSet));
我必须为JTextArea中选定的文本设置定义的颜色(像红色)。这就像是在文本区域(jTextArea)中突出显示进程。当我选择特定的文本并点击任何按钮时,它应该以预定义的颜色改变。
我想做一个计算器程序,我只允许输入数字,但我不知道怎么做,你能告诉我怎么做吗。我在别处什么也没找到。以下是我的源代码:
问题内容: 我想为文本区域中的特定行设置颜色。到目前为止,我发现的是以下内容 但这是行不通的。我究竟做错了什么? 编辑:好的,我一直在尝试,我尝试使用 添加文本,而不是添加文本,然后重新样式,但无济于事。 问题答案: 我不确定JTextArea是否可以设置太多详细的样式,因为它可能是根据所选字体,颜色等为整个文档设置样式的。使用JTextPane / JEditorPane可能会有更多的运气。 编
问题内容: 我想将不同的字体行添加到JTextArea,但是最后一种字体似乎会覆盖其他字体。 请帮忙… 问题答案: 尝试使用JEditorPane / JTextPane http://download.oracle.com/javase/tutorial/uiswing/components/editorpane.html 这些支持HTML格式。普通的JTextArea的setFont方法将为整
介绍 (Introduction) JTextArea类是一个显示纯文本的多行区域。 Class 声明 (Class Declaration) 以下是javax.swing.JTextArea类的声明 - public class JTextArea extends JTextComponent 类构造函数 (Class Constructors) Sr.No. 构造函数和描述 1 JTe
用于自定义云管平台中常用菜单的显示名称。 该功能用于自定义系统菜单名称,全局生效,修改后系统菜单以及与菜单项有关的参数都以当前值显示为准。 目前支持修改的菜单项有认证源、域、组、用户、项目、角色、权限。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “系统配置/全局设置/字典设置” 菜单项,进入字典设置页面。 字典设置 在字典列表中,单击key对应的当前值图标,弹性修改当前值对话框