我如何将JTextArea字符串更改为其他内容

时间:2019-03-31 19:00:15

标签: java swing jtextfield

在我的代码中,我已将我的JtextArea公开,并在我的代码中,我将其称为jtextare和setTextArea,但是当我按下该按钮时,因为它是一个线程,它不允许我在扫描仪工作时更改JTextArea

 public void scan() throws InterruptedException {
    try {

        //This is the part i called it but doesnt change the jtextfield into getUid
        Login login = new Login();
        login.jTextField_username.setText(getUid);

        TerminalFactory factory = TerminalFactory.getDefault();
        List<CardTerminal> terminals = factory.terminals().list();
        System.out.println("Terminals: " + terminals);

        CardTerminal terminal = terminals.get(0);

        System.out.println("Waiting for a card..");
        if (terminal == null) {
            return;
        }
        terminal.waitForCardPresent(0);

        Card card = terminal.connect("T=1");
        System.out.println("Card: " + card);
        System.out.println("Protocol: " + card.getProtocol());
        CardChannel channel = card.getBasicChannel();

        ResponseAPDU response = channel.transmit(new CommandAPDU(new byte[]{(byte) 0xFF, (byte) 0xCA, (byte) 0x00, (byte) 0x00, (byte) 0x00}));
        System.out.println("Response: " + response.toString());
        if (response.getSW1() == 0x63 && response.getSW2() == 0x00) {
            System.out.println("Failed");
        }
        System.out.println("UID: " + bin2hex(response.getData()));

        getUid = bin2hex(response.getData());

    } catch (CardException ex) {
        Logger.getLogger(CardId.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1 个答案:

答案 0 :(得分:1)

请注意,我们无法编译或运行代码段,因此给出的任何答案都必须包含猜测,但是,话虽如此,我认为问题在于您在这里有错误的假设:

//This is the part i called it but doesnt change the jtextfield into getUid
Login login = new Login();         // **** A ****
login.jTextField_username.setText(getUid);  // **** B ****

在行 A 中创建一个新的Login对象,但这是实际显示的对象吗?我感觉不是,您已经创建并显示了“登录”窗口,现在正在创建一个新的,从未显示过,并且在 B 行中更改了状态(文本保留在其文本组件之一中)。如果我的猜测是正确的,那么更好的解决方案是更改实际显示的Login对象的状态,而不是使用此方法创建的新的独特对象。这该怎么做?无法陈述您到目前为止所提供的信息。

如果您想获得更可靠的答案,则需要在问题中创建并发布有效的[最小,完整和可验证示例](最小,完整和可验证示例)-请查看链接一切都会解释。

其他无关的问题:

  • 您的问题中提到了JTextArea,但是代码表明我们正在处理JTextField-是吗?
  • 您的问题文字表明您正在将扫描仪/控制台输入与Swing GUI混合使用。如果是这样,我强烈建议您不要走这条路,而是要通过GUI获取所有输入。这样可以节省您数小时的调试和挫折。