java - 我的标签未显示在 GUI 前缀表达式程序中

标签 java swing user-interface label expression

我正在使用 GUI 来实现前缀表达式程序。程序本身运行良好,但 GUI 有点问题。当我运行它时,结果标签不显示。我已经尝试了一切,但我不知道为什么它不起作用。任何帮助将不胜感激。谢谢!

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;
import javax.swing.*;


public class PrefixExpression extends JFrame
{
    private JPanel panel;
    private JTextField expression;
    private JLabel title;
    private JLabel instruction;
    private JLabel results;
    private final int WIDTH = 310;
    private final int HEIGHT = 175;
    private JButton calculateBtn;

    public PrefixExpression()
    {
        setTitle("Prefix Expression Calculator");
        setSize(WIDTH, HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buildPanel();
        add(panel);
        setVisible(true);
    }

    private void buildPanel()
    {
        title = new JLabel("Calculating Prefix Expressions");
        instruction = new JLabel("Please enter your expression");
        expression = new JTextField(10);
        calculateBtn = new JButton("Calculate");
        calculateBtn.addActionListener(new ButtonListener());

        panel = new JPanel();
        panel.add(title);
        panel.add(instruction);
        panel.add(expression);
        panel.add(calculateBtn);

    }


    public static void main(String[] args)
    {
        PrefixExpression main = new PrefixExpression();
    }



    private class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            Stack <Integer> numberStack = new Stack <Integer>();
            Stack <Character> operatorStack = new Stack <Character>();


            String input = expression.getText();

            StringTokenizer strToken = new StringTokenizer(input, " ", false);


            while (strToken.hasMoreTokens())
            {
                String i = strToken.nextToken();
                int number;
                char operator;

                try
                {
                    number = Integer.parseInt(i);
                    numberStack.push(number);
                }
                catch (NumberFormatException nfe)
                {
                    operator = i.charAt(0);
                    operatorStack.push(operator);
                }
            }

            int answer = calculateMethod(numberStack, operatorStack);
            results = new JLabel("Here is your answer: " + answer); 
            panel.add(results);  //This is where the results label is added to panel
     }

        public int calculateMethod(Stack <Integer> numberStack, Stack <Character> operatorStack)
        {
            int result = 0;
            while(! numberStack.empty())
            {
                char operator = (char) operatorStack.pop();
                if (operator == '+')
                    result = addition(numberStack);
                else if (operator == '*')
                    result = multiplication(numberStack);
            }

            return result;
        }

        public int addition(Stack <Integer> numberStack)
        {
            int numb1 = (int) numberStack.pop();
            int numb2 = (int) numberStack.pop();
            int answer = numb1 + numb2;
            return answer;
        }

        public int multiplication(Stack <Integer> numberStack)
        {
            int numb1 = (int) numberStack.pop();
            int numb2 = (int) numberStack.pop();
            int answer = numb1 * numb2;
            return answer;
        }
    }
}

最佳答案

panel.add(results); //This is where the results label is added to panel

当您将组件添加到可见 GUI 时,您需要执行以下操作:

panel.revalidate();
panel.repaint();

这将调用布局管理器并适当调整组件的大小。

关于java - 我的标签未显示在 GUI 前缀表达式程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15883543/

相关文章:

java - 线程的可重复启动

java - 抗锯齿 JLabel

java - NetBeans 在每个添加的框架中插入 main() 方法

mysql - 是否有具有查询生成器功能的 MYSQL GUI 工具?

java - 在没有批量收集的情况下选择具有对象集合的 Oracle 对象

java - SimpleDateFormat 中日期解析的错误行为

java - 尽管java中的PQ默认是一个min-heap,为什么有些人会重写使用PriorityQueue实现minheap的比较器函数?

JAVA过滤目录内的文件

java - JavaFX ControlsFX 对话框中的 Action 按钮 css 样式

c++ - 如何在只读期间在 QLineEdit 中显示闪烁的光标