RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 927162
Accepted
Александр
Александр
Asked:2020-12-31 02:03:12 +0000 UTC2020-12-31 02:03:12 +0000 UTC 2020-12-31 02:03:12 +0000 UTC

处理按钮单击并从字段中获取文本

  • 772

问题在问题的标题中。我有几节课。这是第一个

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class GraphicalDisplay {

private JFrame frame;
private JLabel titleLabel1;
private JLabel titleLabel2;
private JLabel titleLabel3;
private JLabel titleLabel4;
private JLabel titleLabel5;
private TextField text;
private Button button;
private JLabel titleLabel6;


public GraphicalDisplay(String title1, String title2, String title3, String title4) {
    buildFrame();
    titleLabel1.setText(title1);
    titleLabel2.setText(title2);
    titleLabel3.setText(title3);
    titleLabel6.setText(title4);
}

private void buildFrame() {
    frame = new JFrame("Графический дисплей");
    frame.setPreferredSize(new Dimension(800, 300));
    frame.setLayout(new GridLayout(8, 1));

    titleLabel1 = new JLabel();
    titleLabel2 = new JLabel();
    titleLabel3 = new JLabel();
    titleLabel6 = new JLabel();
    text = new TextField("", 50);
    button = new Button("Ввести");
    button.addActionListener((ActionListener) this);
    frame.add(titleLabel1);
    frame.add(titleLabel2);
    frame.add(titleLabel3);
    frame.add(text);
    frame.add(button);
    frame.add(titleLabel6);


    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setAlwaysOnTop(true);
    frame.setVisible(true);
    frame.pack();
    }

    @Override
    public void mouseClicked(ActionEvent e) {
        getText1();
    }

    public String getText1() {
        String textbutton = text.getText();
        return textbutton;
    }

    public void setText4(String text) {
        titleLabel6.setText(text);
    }

}

这是第二个

import java.awt.event.MouseEvent;
import java.util.HashSet;

public class SupportSystem
{
private InputReader reader;
private Responder responder;
public GraphicalDisplay display1;

public SupportSystem()
{
    reader = new InputReader();
    responder = new Responder();
}

public void start()
{
    boolean finished = false;

    printWelcome();

    while(!finished) {
        String textbutton = display1.mouseClicked(MouseEvent);
        HashSet<String> input = reader.getInput(textbutton);


        if(input.contains("exit")==true) {
            finished = true;
        }
        else {
            String response = responder.generateResponse(input);
            System.out.println(response);
        }
    }
    printGoodbye();
}

public void printWelcome()
{
    display1 = new GraphicalDisplay("Добро пожаловать в техподдержку DodgySoft.", "Расскажите нам о вашей проблеме.", "Введите 'exit' для выхода из системы.","");
}

private void printGoodbye()
{
    display1.setText4("Приятно было пообщаться. До свидания...");
}

}

研究 Internet 上的内容,我发现了各种处理程序、侦听器、事件等。我自己甚至无法理解它的外观,更不用说工作了。帮助!

java
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Konstantin_SH
    2020-12-31T03:04:38Z2020-12-31T03:04:38Z

    要从 JFrame 字段中获取文本,请使用 .getText() 方法并将该文本写入 String 变量。例如,有这样的代码。

       private JTextField output = new JTextField();
       private String getteroftext;
       output.setText("Текст, который нужно получить");
       getteroftext = output.getText();
    

    接下来,我们对字符串做我们想做的事情,它将包含来自输​​出字段的文本

    可以通过这种方式处理对 GUI 按钮的单击。

       // Реализуем кнопку стирание
       // Объявляем кнопку с текстом "С"
       private JButton backspace = new JButton("C");
       // Добавляем "Ослеживатель события"
       backspace.addActionListener(new ActionListener() {
       // Используем переопределение
       @Override
       // Добавляем событие нажатия на кнопку e — название события
       public void actionPerformed(ActionEvent e) {
                    // объявляем временную переменную, содержащую текст из поля output
                    String tmp =output.getText();
                    /* Задаем полю output текст из переменной tmp посимвольно, 
                     от символа с индексом 0 до (индекс последнего символа в 
                     строке-1)*/  
                     output.setText(tmp.substring(0,tmp.length()-1));
                }
            });
    

    如果您需要处理按键,例如 F1...F9 或 Tab、Space 等,请使用虚拟按钮命令

            VK_НазваниеКнопки
    

    例如像这样

          // Реализуем ручной ввод
          private void manualInput() {
        ActionListener l = (ActionEvent button_is_presed)->{
            JButton b =(JButton) button_is_presed.getSource();
            output.setText(output.getText()+b.getText());
        };
        for(JButton b :numbers){
            b.addActionListener(l);
        }
    
        addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e){
            char symvol = e.getKeyChar();
          if(symvol==KeyEvent.VK_BACK_SPACE){
          String tmp =output.getText();
          output.setText(tmp.substring(0,tmp.length()-1));
    

    如果您需要将文本从键盘写入输出字段,我建议您这样做

       addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e){
            char symvol = e.getKeyChar();        
    

    处理鼠标点击

         // Делаем наш класс наследником класса MouseAdapter
         public class SupportSystem extends MouseAdapter {
         // Далее можем использовать все методы класса-родителя
         // Пишем свой код... ...доходим до обработки события нажатия на мышь
    
         // Используем метод mousePresed
         public void mousePresed(MouseEvent mouse_is_presed){
         // Пишем что должно происходить при возникновении события 
         // mouse_is_presed
    
         } 
         // Не забываем закрыть класс
         }
    

    如果您需要通过单击“十字”来关闭窗口,则有一些特殊功能,在这种情况下您不需要触摸鼠标。关闭应用程序是这样完成的

     private JFrame ourMainFrame;
     // Задаем размеры, делаем окно видимым и задаем другие параметры... 
     // ... Доходим до параметра поведения при нажатии на "крестик"  
     ourMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5