更改使用我的程序的文字的文字大小?

时间:2016-05-17 22:40:07

标签: java text jar console size

很高兴能够访问这个非常有用的网站。我的Java程序有问题,可能是一个简单的修复,或者无法修复。

您知道在运行NetBeans中打开的程序时,它如何显示NetBeans应用程序中的输出?我正在尝试创建一个程序,允许任何将它放在计算机上执行它的人,即使他们没有安装像NetBeans或Eclipse这样的IDE。当有人执行我的程序时,我希望它显示与在NetBeans中运行它时相同的内容,具有相同的输出和所有内容。该程序不使用GUI或类似的东西。我设法用“清理和构建项目”选项创建一个可执行的.jar文件,然后我创建了一个成功执行该程序的.bat文件。这应该实现我允许任何人运行它的目标。当我启动.bat文件时,它可以工作,并显示一个白色文本黑色背景屏幕,该屏幕在NetBeans中运行程序时完全按照它运行。

问题在于,当我运行程序时(使用.bat文件),文本太小了...... 我已经尝试到处寻找解决方案,但我可以只找到关于如何使用GUI或其他比我的程序需要更复杂的东西的讨论。如果有必要,我愿意使用GUI的东西,但由于GUI是什么,我认为它不会有所帮助。根据我的理解,GUI不是一件大事,而是一个用户界面,由较小的部分(如弹出输入提示和滚动条)组成,每个部分由程序员制作。我不需要任何花哨的滚动条等,我只需要我的程序执行就像在NetBeans中运行一样(很确定这称为控制台),我需要更改程序文本的文本大小执行。

我非常感谢任何帮助,即使您不确定它是否有效。如果答案需要冗长的解释并且您不想解释,那就没关系;告诉我,我必须学会解决这个问题,如有必要,我可以研究它。

1 个答案:

答案 0 :(得分:0)

我刚刚创建了一个。尝试使用这个并告诉我们它是否有帮助。

编辑添加了一个JTextField来读取数据。它是比前一个更高级的代码,因为它使用并发。我试着简单,这些是你可以使用的功能:

  • MyConsole ():构造函数。创建并显示控制台
  • print (String s):打印s字符串
  • println (String s)打印s字符串并添加新行
  • read ():让您等到用户输入并按Enter
  • closeConsole ():关闭控制台

以下是代码:

public class MyConsole implements ActionListener {

    private JFrame frame;
    private JTextArea myText;
    private JTextField userText;
    private String readText;
    private Object sync;        

    /*
     * Main and only constructor
     */
    public MyConsole() {
        // Synchronization object
        sync = new Object();

        // Create a window to display the console
        frame = new JFrame("My Console");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 200);
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.setContentPane(createUI());
        frame.setVisible(true);
    }

    /*
     * Creates user interface
     */
    private Container createUI() {
        // Create a Panel to add all objects
        JPanel panel = new JPanel (new BorderLayout());

        // Create and set the console 
        myText = new JTextArea();
        myText.setEditable(false);
        myText.setAutoscrolls(true);
        myText.setBackground(Color.LIGHT_GRAY);

        // This will auto scroll the right bar when text is added
        DefaultCaret caret = (DefaultCaret) myText.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

        // Create the input for the user
        userText = new JTextField();
        userText.addActionListener(this);

        panel.add(new JScrollPane(myText), BorderLayout.CENTER);
        panel.add(userText, BorderLayout.SOUTH);

        return panel;
    }

    /*
     * Waits until a value is typed in the console and returns it
     */
    public String read(){
        print("==>");

        synchronized (sync) {
            try {
                sync.wait();
            } catch (InterruptedException e) {
                return readText = "";
            }
        }   
        return readText;
    }

    /*
     * Prints s
     */
    public synchronized void print(String s){
        // Add the "s" string to the console and 
        myText.append(s);
    }

    /*
     * Prints s and a new line
     */
    public synchronized void println(String s){
        this.print(s + "\r\n");
    }

    /*
     * Close the console
     */
    public void closeConsole(){
        frame.dispose();
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        // Check if the input is empty
        if ( !userText.getText().equals("") ){
            readText = userText.getText();          
            println(" " + readText);
            userText.setText("");
            synchronized (sync) {
                sync.notify();
            }
        }           
    }
}

以下是如何使用它(示例)。它只是询问你的年龄,并根据你的输入写出一些东西:

public static void main(String[] args) {
    MyConsole console = new MyConsole();

    console.println("Hello! (Type \"0\" to exit)");

    int age = 1;

    do{
        console.println("How old are you ?");
        String read = console.read();
        try {
            age = Integer.valueOf(read);

            if ( age >= 18){
                console.println("Wow! " + age + " ? You are an adult already!");
            }else if ( age > 0 ){
                console.println("Oh! " + age + " ? You are such a young boy!");
            }else if (age == 0){
                console.println("Bye bye!");
            }else{
                console.println("You can't be " + age + " years old!");
            }
        }catch (Exception e) {
            console.println("Did you write any number there ?");
        }
    } while ( age != 0 );

    console.closeConsole();
}

这是一张图片:

Custom console