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

Java Swing:从JOptionPane获取文本值

范侯林
2023-03-14

我想创建一个在POS系统中使用的新窗口。用户输入的是客户拥有的金额,窗口必须显示兑换金额。我是使用< code>JOptionPane功能的新手(我一直在使用< code>JAVAFX它是不同的)。

这是我的代码:

public static void main(String[] argv) throws Exception {
    String newline = System.getProperty("line.separator");
    int cost = 100;
    int amount = Integer.parseInt(JOptionPane.getText()) // this is wrong! This needs to come     from user input box in the same window.
    JFrame frame = new JFrame();
    String message = "Enter the amount of money"+newline+"The exchange money is: "+amount-cost;
    String text = JOptionPane.showInputDialog(frame, message);
    if (text == null) {
      // User clicked cancel
}

有什么建议吗?

共有3个答案

公孙宇
2023-03-14

尝试使用以下方法

if( myJOptionPane.getValue() instanceOf String){
   String myString = (String) myJOptionPane.getValue();
}

然后使用myString的结果来做任何你打算做的事情。

房项禹
2023-03-14

您需要做的是创建自己的自定义JOptionPane,它具有自己的组件,而不是使用构建中的组件。

在其中放置一个 JTextField,并向其中添加一个 DocumentListener,这样当您更改其上的某些内容时,可以根据需要将其对等到状态标签

试试这个小例子:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class JOptionPaneExample {

    private JLabel label;
    private JTextField tfield;
    private JLabel statusLabel;

    private static final int GAP = 5;

    private void displayGUI() {
        JOptionPane.showMessageDialog(null, getPanel());
    }

    private JPanel getPanel() {
        JPanel panel = new JPanel(new GridLayout(0, 1));
        label = new JLabel("Enter something: ", JLabel.CENTER);
        tfield = new JTextField(10);
        tfield.getDocument().addDocumentListener(new MyDocumentListener());
        JPanel controlPanel = new JPanel();
        controlPanel.add(label);
        controlPanel.add(tfield);
        panel.add(controlPanel);

        statusLabel = new JLabel("", JLabel.CENTER);
        panel.add(statusLabel);

        return panel;
    }

    private class MyDocumentListener implements DocumentListener {

        @Override
        public void changedUpdate(DocumentEvent de) {
            updateStatus();
        }

        @Override
        public void insertUpdate(DocumentEvent de) {
            updateStatus();
        }

        @Override
        public void removeUpdate(DocumentEvent de) {
            updateStatus();
        }

        private void updateStatus() {
            statusLabel.setText(tfield.getText());
        }
    }

    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                new JOptionPaneExample().displayGUI();
            }
        };
        EventQueue.invokeLater(runnable);
    }
}
陆宝
2023-03-14

使用 InputDialog 获取用户输入

public static void main(String[] argv) throws Exception {
      //JFrame frame = new JFrame();
      //frame.setVisible(true);
      int cost = 100;
      JLabel l=new JLabel("The exchange money is");

      JPanel p=new JPanel(new GridLayout(1, 2, 10, 10));
      p.setPreferredSize(new Dimension(400, 50));
      JTextField t=new JTextField("Enter the amount of money");
      t.addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyReleased(java.awt.event.KeyEvent evt) {
            try{
            int amount=Integer.parseInt(t.getText());
            l.setText("The exchange money is: \n" + (amount - cost));
            }catch(Exception ex){
               // ex.printStackTrace();
            }
        }
      });
      p.add(t);
      p.add(l);

    int option = JOptionPane.showConfirmDialog(null,p,"JOptionPane Example : ",JOptionPane.OK_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE);
    if(option==0){
        System.out.println("ok clicked");
    }else{
        System.out.println("cancel clicked");
    }
}
 类似资料:
  • 问题内容: 我有一段这样的HTML: 我有一个与此HTML匹配的WebElement。如何从中仅提取“标题”?方法.getText()返回“ Title \ nAuthor”。 问题答案: 您无法在WebDriver API中执行此操作,而必须在代码中执行。例如: 请注意,结尾的换行符实际上是元素文本的一部分,因此,如果您不想要它,则需要将其删除。

  • 这是我第一次使用网页抓取。到目前为止,我能够导航并找到我想要的HTML部分。我也可以打印出来。问题是只打印文本,这不起作用。我在尝试时遇到以下错误: 这是我的代码:

  • 我可以从SVG中的文本标记获取文本。我正在附加HTML 我想得到的是

  • 问题内容: 在我的应用程序中,我使用来显示一些日志信息。因为我想突出显示文本中的某些特定行(例如错误消息),所以将设置为“ ”。这样,我可以设置文本格式。 现在,我创建一个JButton,将其内容复制到剪贴板中。这部分很简单,但是我的问题是,当我调用时,我得到了HTML代码,例如: 而不是只获取原始内容: 有没有办法只获取纯文本格式的内容?还是我需要自己将HTML转换为原始文本? 问题答案: 基于

  • 问题内容: 我在相当基本的android开发水平上。 我想从诸如“ http://www.google.com”的页面获取文本。(我将使用的页面只有文本,因此没有图片或类似的东西)所以,要明确:我想将页面上的文本写入应用程序中的字符串等。 我尝试了这段代码,但是我什至不知道它是否能满足我的要求。 无论如何我都无法收到任何文字。我应该怎么做? 问题答案: 从您提供的示例代码中,您甚至没有读取请求的响

  • 我正在尝试使用PHP从网页收集文本,这样当该网站上的文本更新时,它也会自动更新。 以网站http://www.roblox.com/CW-Ultimate-Amethyst-Addiction-item?id=188004500为例——在类中,有一个数字说R$20,003——我的目标是从Roblox获取文本到我的网站。 我已尝试使用该代码执行此操作,但无效-我遇到以下错误: 警告:file_get