当前位置: 首页 > 知识库问答 >
问题:

字符串文本不显示在appendText在JAVA

曾歌者
2023-03-14

我正在NetbeanJava中做一个猜谜游戏。将猜测数字与目标数字进行比较后的结果(消息/字符串文本)没有显示在反馈面板文本区域中。我使用appendText将文本从MainFrame类传递到febackPanel类。但是,按下猜测按钮后文本没有显示在febackPanel中。请帮助我。

大型机。Java语言

public class MainFrame extends JFrame{
    FeedbackPanel formPanel;
    InputPanel textPanel;
    public static int target;
    JTextArea ta;
    
    public MainFrame()
    {
    super("HIgher-Lower Game");
        
    formPanel=new FeedbackPanel();
    add(formPanel, BorderLayout.EAST);
       
        textPanel=new InputPanel();
        add(textPanel, BorderLayout.WEST);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       

        formPanel.setFormListener(new FormListener(){
            public void formEventOccurred(FormEvent e){
                int num = e.getNum();
                //int square=num*num;
                if (num == target)
                    {
                       formPanel.appendText("Congratulations, your guess is correct!");
                        //formPanel.setText("Congratulations, your guess is correct!");
                        //ta.setText("Congratulations, your guess is correct!");
                        //System.out.paMairintln("Congratulations, your guess is correct!");
                    }
                else if (num > target)
                    //if guess is higher than the target
                    {
                        formPanel.appendText("Your guess is higher than the target");
                        //formPanel.setText("Your guess is higher than the target");
                        //ta.setText("Your guess is higher than the target");
                        //System.out.println("Your guess is higher than the target");
                    }
                else if (num < target)
                    //if guess is lower than the target
                    {
                        formPanel.appendText("Your guess is lower than the target");
                        //formPanel.setText("Your guess is lower than the target");
                        //ta.setText("Your guess is lower than the target");
                        //System.out.println("Your guess is lower than the target");
                    }
                //textPanel.appendText(Integer.toString(square));
            } 
        });
        
        textPanel=new InputPanel();
        add(textPanel, BorderLayout.WEST);
                
        setSize(300,300);
    setVisible(true);
    this.pack();
    
    }
     
    public static void main(String[] args) {
        Random random = new Random();
        target = random.nextInt(100);
         
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
        new MainFrame();
            }
    });
    }
}

输入面板。Java语言

public class InputPanel extends JPanel {
    private JLabel label1;
    private JTextField tfIn;
    private JButton b;
    
    private FormListener formListener;

    public FormListener getTextListener() {
        return formListener;
    }

    public void setFormListener(FormListener formListener) {
        this.formListener = formListener;
    }

    public InputPanel() {
        GridBagLayout gb=new GridBagLayout();
        GridBagConstraints gbc=new GridBagConstraints();
        gbc.insets=new Insets(5,5,5,5);
        setLayout(gb);
        setBorder(BorderFactory.createTitledBorder("InputForm"));
        
        label1 = new JLabel ("Enter number [1-100]");
        gbc.anchor=GridBagConstraints.FIRST_LINE_END;
        gbc.gridx=1;
        gbc.gridy=1;
        gbc.gridheight=1;
        gbc.gridwidth=1;
        add(label1,gbc);
        
        tfIn = new JTextField (10);
        gbc.gridx=1;
        gbc.gridy=2;
        gbc.gridheight=1;
        gbc.gridwidth=1;
        add(tfIn,gbc);
        
        b = new JButton ("Guess");
        gbc.anchor=GridBagConstraints.CENTER;
        gbc.gridx=1;
        gbc.gridy=3;
        gbc.gridheight=1;
        gbc.gridwidth=2;
        add(b,gbc);
        
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int num = Integer.parseInt(tfIn.getText());
                FormEvent ev=new FormEvent(this,num);
                if(formListener != null){
                    formListener.formEventOccurred(ev);
                }
            }
            
        });
    }
}

反馈面板。Java语言

public class FeedbackPanel extends JPanel{
    JTextArea ta;

    FormListener listen;
        
    public FeedbackPanel(){
        setBorder(BorderFactory.createTitledBorder("Feedback"));
        setLayout(new BorderLayout());
        ta=new JTextArea(5,20);
        
        
        add(new JScrollPane(ta), BorderLayout.CENTER);
    }
    
    public void appendText(String text){
        ta.append(text + "\n" + "\r");
    
    }

    public void setFormListener(FormListener formListener) {
        this.listen = formListener;
    }




 
}

表格vent.java

public class FormEvent extends EventObject{
    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
    
    public FormEvent(Object source){
        super(source);
    }
    
    public FormEvent(Object source, int num){
        super(source);
        this.num=num;
    }
}

表格istener.java

public interface FormListener extends EventListener{
    public void formEventOccurred(FormEvent e); 
    
}

共有1个答案

诸葛煜
2023-03-14

首先:把这个放在听众面前:

textPanel=new InputPanel();
    add(textPanel, BorderLayout.WEST) 

第二:您需要在结束时定义电子显示功能

formEventOccurred(FormEvent e) 
 类似资料:
  • 编辑:我已经删除了用于out.write的for循环,它不是必需的。我在使用字符串数组时使用过它。

  • 问题内容: 我需要帮助弄清楚如何在程序中显示文本,以便它可以在我创建的多边形形状的中间显示“停止”。我想做的是创建一个停车标志。我已经负责创建和显示该停车标志,因此现在只需要在屏幕上显示“停止”即可 } 问题答案: 更换用,并添加到它(多边形后): 关于的Javadoc : StackPane将其子级放在从后到前的堆栈中。子级的z顺序由子级列表的顺序定义,第0个子级是底部,最后一个子级在顶部。如果

  • 本文向大家介绍在Java字符串中最多显示10个字符,包括了在Java字符串中最多显示10个字符的使用技巧和注意事项,需要的朋友参考一下 要在一个字符串中最多显示10个字符,请使用Formatter类。 为Java中的Formatter类导入以下软件包- 创建一个新的Formatter对象- 现在让我们在一个字符串中最多显示10个字符- 以下是一个例子- 示例 输出结果

  • 问题内容: 我们正在TextArea应用程序中使用JavaFX的控件,并尝试将其与 集成在一起-例如,当用户输入词典中没有的错误单词时,该单词将突出显示。 有什么办法可以突出显示控件中的单词吗?我在中没有看到任何选择,因此,如果有人可以建议一种方法? 我想,可能有可能使用组件并用分别为单词加上颜色。但是,这会带来很多不同的拼写检查问题,例如html标签和字数统计。 问题答案: JavaFX Tex

  • 我有一个注册过程,在确认细节上,我正在尝试显示输入的地址,但我似乎不能让它正确显示,我已经尝试了网站上的其他答案,但没有一个似乎是有效的。 代码 HTML 理想情况下,我希望使用,但最初我尝试了一下,找到的答案是使用 这是,它正在填充我的“comp add”。 当用户离开页面时,它会这样做,并按上面所示工作,但我无论如何都无法将其显示为: 添加第1行 添加第2行 城镇 县 BB1 1BB

  • 为什么下面的代码不起作用?它适用于Toast,但不适用于TextView。当我运行程序时,boldName不会显示为粗体,但当我将其设置为祝酒词时,它确实显示为粗体。有人有其他解决办法吗?