首页 > 解决方案 > 如何将 JTextArea 字符串更改为其他内容

问题描述

在我的代码中,我公开了我的 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);
    }
}

标签: javaswingjtextfield

解决方案


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

//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行正在更改其状态(保存在其文本组件之一中的文本)。如果我的猜测是正确的,那么更好的解决方案是更改实际显示的登录对象的状态,而不是您在此方法中创建的新的和不同的对象。这个怎么做?无法说出您迄今为止提供的信息。

如果您想要一个更可靠的答案,那么您需要在您的问题中创建并发布一个有效的 [Minimal, Complete, and Verifiable example](Minimal, Complete, and Verifiable example)——请查看链接解释一切。

其他不相关的问题:

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

推荐阅读