0

我正在用 java 语言编写一个程序,我想在我的JOptionPane.showInputDialog. 我的对话框是这样的:

JOptionPane.showInputDialog("Total Amount Deposited:\t\t" +
        totalAmount + "\n Enter Coin Value \n" + "(Enter 1 to stop)");

我想让说的部分(Enter 1 to stop)比其他部分小一点。我是java语言的初学者(大约2个月:D)并且没有任何其他经验。所以,请保持你的答案简单。提前致谢。

4

5 回答 5

0

JOptionPane 将在支持基本 HTML 的 JLabel 中显示文本。所以你需要用 HTML 包装你的文本字符串,然后你可以使用不同的字体、颜色或其他任何东西。

简单的例子:

String text = "<html>Normal text <b>and bold text</b></html>";
JOptionPane.showInputDialog(text);
于 2013-11-10T18:07:32.983 回答
0

创建一个字符串 = “文本”

放入标签 pa 使用 setFont();

快速示例:

import javax.swing.JFrame;
import javax.swing.JLabel;


public class Test extends JFrame {

    public static void main(String[] args)
    {
        String a = "(enter 1 to stop)";
        JLabel pa = new JLabel();

        JFrame fr = new JFrame();
        fr.setSize(200,200);

        pa.setText(a);
        pa.setFont(pa.getFont().deriveFont(11.0f)); //change the font size from here

        fr.add(pa);
        fr.setVisible(true);
    }
}
于 2013-11-10T18:20:03.793 回答
0

您也可以使用Font.pointSize()Font.size()java.awt.Font.

于 2013-11-10T18:22:18.787 回答
0

对于 JDK 8.x,我发现以下工作可以扩大内置 JOptionPane.showInputDialog 大部分部分的字体大小,尤其是按钮、文本框和组合框。

它大多是通用的,除了我想用粗体字的两个部分。

当您想要放大 99% 的输入对话框片段时,它甚至允许例外(将其视为“全部除外”策略),除了一两个片段。

很抱歉格式错误,但“代码示例”工具搞砸了一切,我没有时间修复它。

导入 java.awt.*;

导入 java.util.ArrayList;

导入 java.util.Arrays;

导入 java.util.Collections;

导入 java.util.Comparator;

导入 java.util.List;

导入 java.util.Map;

导入 java.util.Objects;

导入 javax.swing.*;

/**
 * Changes the font size used in JOptionPane.showInputDialogs to make them more
 * ADA section 508 compliant by making the text size larger, which is very nice
 * for older people and anyone else with vision problems.
 * 
 * @param fontSize
 *        - size of the font in pixels
 */
private static void makeDialogsEasierToSee(int fontSize)
{
    // This next one is very strange; but, without it,
    // any subsequent attempt to set InternalFrame.titleFont will
    // be ignored, so resist the temptation to remove it.
    JDialog.setDefaultLookAndFeelDecorated(true);

    // define normal and bold fonts that we will use to override the defaults
    Font normalFont = new Font(Font.MONOSPACED, Font.PLAIN, fontSize);
    Font boldFont = normalFont.deriveFont(Font.BOLD);

    // get a list of objects that we can try to adjust font size and style for
    List<Map.Entry<Object, Object>> entries = new ArrayList<>(UIManager.getLookAndFeelDefaults().entrySet());
    // System.out.println(entries.size());
    // remove anything that does NOT involve font selection
    entries.removeIf(filter -> filter.getKey().toString().indexOf(".font") == -1);
    // System.out.println(entries.size());

    // Define a list of font sections of the screen that we do NOT want to
    // enlarge/bold.
    // The following is specific to jKarel so we do not obscure the display of
    // "beeper piles" on the maps.
    List<String> exempt = Arrays.asList("Panel.font");

    // remove anything on the exempt list
    entries.removeIf(filter -> exempt.contains(filter.getKey().toString()));
    // System.out.println(entries.size());

    // optional: sort the final list
    Collections.sort(entries, Comparator.comparing(e -> Objects.toString(e.getKey())));

    // apply normal font to all font objects that survived the filters
    for (Map.Entry<Object, Object> entry : entries)
    {
        String key = entry.getKey().toString();
        // System.out.println(key);
        UIManager.put(key, normalFont);
    }

    UIManager.put("Label.font", boldFont);
    UIManager.put("InternalFrame.titleFont", boldFont);
}
于 2018-10-25T20:57:26.323 回答
-1

您基本上有两个简单的选择 - 切换到 JDialog 或使用 HTML。

JOptionPane 旨在用于简单的消息或与用户的交互。如果您想摆脱固定用例,JDialog 是一个更好的选择,并且随着您变得越来越复杂,您最终可能不得不切换到它。

为了满足您的直接用例,您可以发送 html 消息。规则是:

  • <html></html>您必须以标签开头和结尾。把它们放在中间,什么也没有发生。
  • 您必须删除代码中的所有“\n”。它们无论如何都不能在 html 中工作,并且 JPanel 会尝试使用每一行,正如 \n 所定义的那样作为单独的 html 文档。切换到

    int totalAmount = 345; //for testing
    
    String message = "<html>"
                   +    "Total Amount Deposited:  " + totalAmount 
                   +    "<br> Enter Coin Value " 
                   +    "<br><span style='font-size:10'>(Enter 1 to stop)</span>"
                   + "</html>";     
    JOptionPane.showInputDialog(message);
    
于 2013-11-10T18:47:44.843 回答