import java.applet.Applet;
import java.awt.*;
import java.util.Scanner;
import javax.swing.*;
public class font_chooser extends JApplet {
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Object[] possibilities = ge.getAvailableFontFamilyNames();
Object[] colors = { "red", "yellow", "blue", "orange", "pink", "cyan", "magenta", "black", "white", "gray" };
String font = (String) JOptionPane.showInputDialog(null, "Choose a Font", "Font Chooser",
+JOptionPane.PLAIN_MESSAGE, null, possibilities, "");
我将变量前景色设置为用户输入
String foregroundcolor = (String) JOptionPane.showInputDialog(null, "Chose Font Color", "Color",
JOptionPane.PLAIN_MESSAGE, null, colors, "");
如果用户正确选择字体和颜色,我正在打印此拼图
if ((font != null) && (font.length() > 0) && (colors != null)) {
JTextArea textArea = new JTextArea("The quick brown fox jumped over the lazy dog’s back."
+ "n Pack my box with five dozen liquor jugs" + "n Jackdaws love my big sphinx of quartz."
+ "n Mr. Jock, TV quiz PhD, bags few lynx." + "n abcdefghijklmnopqrstuvwxyz"
+ "n ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "n 01234567890"
+ "n €†™´¸¢©¤°÷½¼¾>¡¿«‘’<¯µ ·¬ªº¶±£"»®§¹²³ß×™¥" + "n ÀÁÂÃÄÅÆÇÈÉ ÊËÌÍÎÏÐÑÒÓÔ ÕÖØÙÚÛÜÝÞÿ"
+ "n àáâãäåæçèé êëìíîïðñòóô õöøùúûüýþÿ" + "n !"#$%&'()*+,-./:;<=>?@[\^_z{|}~"
+ "n uvw wW gq9 2z 5s il17|!j oO08 `'" ;:,. m nn rn {[()]}u");
textArea.setFont(new Font((String) font, Font.ITALIC, 16));
我将文本区域前景应用于用户输入,这似乎无法正常工作,想法?
textArea.setForeground(Color.getColor(foregroundcolor));
JOptionPane.showMessageDialog(null, textArea);
// JOptionPane.showMessageDialog(null, "You chose " + font);
}
}
}
你误解了Color.getColor(...)
方法。它采用字符串,但它是 Color int 的字符串表示形式,而不是颜色字符串的字符串表示形式。根据颜色 API:
参数被视为要获取的系统属性的名称。然后,此属性的字符串值被解释为整数,然后将其转换为 Color 对象。
请考虑使用Map<String, Color>
来帮助您设置颜色。
例如(虽然丑陋,因为它使用并行数组:
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
public class TestColors {
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Object[] possibilities = ge.getAvailableFontFamilyNames();
String[] colors = { "red", "yellow", "blue", "orange", "pink", "cyan", "magenta", "black", "white", "gray" };
Color[] realColors = { Color.RED, Color.YELLOW, Color.BLUE, Color.ORANGE, Color.PINK, Color.CYAN, Color.MAGENTA,
Color.BLACK, Color.WHITE, Color.GRAY };
Map<String, Color> colorMap = new HashMap<>();
for (int i = 0; i < colors.length; i++) {
colorMap.put(colors[i], realColors[i]);
}
String font = (String) JOptionPane.showInputDialog(null, "Choose a Font", "Font Chooser",
+JOptionPane.PLAIN_MESSAGE, null, possibilities, "");
String foregroundcolor = (String) JOptionPane.showInputDialog(null, "Chose Font Color", "Color",
JOptionPane.PLAIN_MESSAGE, null, colors, "");
System.out.println(foregroundcolor);
if ((font != null) && (font.length() > 0) && (colors != null)) {
JTextArea textArea = new JTextArea("The quick brown fox jumped over the lazy dog’s back."
+ "n Pack my box with five dozen liquor jugs" + "n Jackdaws love my big sphinx of quartz."
+ "n Mr. Jock, TV quiz PhD, bags few lynx." + "n abcdefghijklmnopqrstuvwxyz"
+ "n ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "n 01234567890"
+ "n €†™´¸¢©¤°÷½¼¾>¡¿«‘’<¯µ ·¬ªº¶±£"»®§¹²³ß×™¥" + "n ÀÁÂÃÄÅÆÇÈÉ ÊËÌÍÎÏÐÑÒÓÔ ÕÖØÙÚÛÜÝÞÿ"
+ "n àáâãäåæçèé êëìíîïðñòóô õöøùúûüýþÿ" + "n !"#$%&'()*+,-./:;<=>?@[\^_z{|}~"
+ "n uvw wW gq9 2z 5s il17|!j oO08 `'" ;:,. m nn rn {[()]}u");
textArea.setFont(new Font((String) font, Font.ITALIC, 16));
textArea.setForeground(colorMap.get(foregroundcolor));
JOptionPane.showMessageDialog(null, new JScrollPane(textArea));
// JOptionPane.showMessageDialog(null, "You chose " + font);
}
}
}
请注意,
- 如果您的类不用作小程序,则不应扩展 JApplet。
- 现在没有什么应该使用小程序。
更干净一点:
import java.awt.*;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.swing.*;
public class TestColors {
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Object[] possibilities = ge.getAvailableFontFamilyNames();
Map<String, Color> myColorMap = new LinkedHashMap<>();
myColorMap.put("Red", Color.RED);
myColorMap.put("Orange", Color.ORANGE);
myColorMap.put("Yellow", Color.YELLOW);
myColorMap.put("Green", Color.GREEN);
myColorMap.put("Blue", Color.BLUE);
myColorMap.put("Magenta", Color.MAGENTA);
myColorMap.put("Black", Color.BLACK);
myColorMap.put("Gray", Color.GRAY);
String[] myColors = myColorMap.keySet().toArray(new String[] {});
String font = (String) JOptionPane.showInputDialog(null, "Choose a Font", "Font Chooser",
+JOptionPane.PLAIN_MESSAGE, null, possibilities, "");
String foregroundcolor = (String) JOptionPane.showInputDialog(null, "Chose Font Color", "Color",
JOptionPane.PLAIN_MESSAGE, null, myColors, "");
if ((font != null) && (font.length() > 0) && (foregroundcolor != null)) {
JTextArea textArea = new JTextArea("The quick brown fox jumped over the lazy dog’s back."
+ "n Pack my box with five dozen liquor jugs" + "n Jackdaws love my big sphinx of quartz."
+ "n Mr. Jock, TV quiz PhD, bags few lynx." + "n abcdefghijklmnopqrstuvwxyz"
+ "n ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "n 01234567890"
+ "n €†™´¸¢©¤°÷½¼¾>¡¿«‘’<¯µ ·¬ªº¶±£"»®§¹²³ß×™¥" + "n ÀÁÂÃÄÅÆÇÈÉ ÊËÌÍÎÏÐÑÒÓÔ ÕÖØÙÚÛÜÝÞÿ"
+ "n àáâãäåæçèé êëìíîïðñòóô õöøùúûüýþÿ" + "n !"#$%&'()*+,-./:;<=>?@[\^_z{|}~"
+ "n uvw wW gq9 2z 5s il17|!j oO08 `'" ;:,. m nn rn {[()]}u");
textArea.setFont(new Font((String) font, Font.ITALIC, 16));
textArea.setForeground(myColorMap.get(foregroundcolor));
JOptionPane.showMessageDialog(null, new JScrollPane(textArea));
}
}
}