gpt4 book ai didi

java - 如何从文本字段获取即时更新?

转载 作者:行者123 更新时间:2023-12-01 17:31:27 24 4
gpt4 key购买 nike

我想更改文本字段中的输入,该输入将立即更新到显示,而不是按 ENTER 按钮进行更新。

这是我的代码。

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

public class MyProgram01 extends JFrame
{
private JTextField text1;
private JCheckBox check1;
private JCheckBox check2;
private String message;
private JLabel label1;
private JLabel label2;
private Font font;

public MyProgram01(String title)
{
super(title);
check1 = new JCheckBox("Bold");
check2 = new JCheckBox("Italics");

label1 = new JLabel("Text : ");
label2 = new JLabel("Style : ");
message = "Good Morning...";
text1 = new JTextField(message, 100);
font = new Font("Times New Roman", Font.PLAIN, 36);
setBounds(0, 0, 600, 300);

JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, 600, 120);
panel.setBackground(Color.ORANGE);
label1.setFont(new Font("Times New Roman", Font.PLAIN, 36));
label1.setBounds(15, 15, 100, 36);
panel.add(label1);
text1.setBounds(120, 15, 400, 36);
panel.add(text1);

label2.setFont(new Font("Times New Roman", Font.PLAIN, 36));
label2.setBounds(15, 65, 100, 36);
panel.add(label2);
check1.setBounds(120, 65, 100, 36);
check2.setBounds(220, 65, 100, 36);
panel.add(check1);
panel.add(check2);

check1.addActionListener(new CheckBoxListener());
check2.addActionListener(new CheckBoxListener());
text1.addActionListener(new TextFieldListener());

setLayout(null);
add(panel);
}
public void paint(Graphics g)
{
super.paint(g);

g.setFont(font);
g.drawString(message, 15, 255);

}
private class CheckBoxListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(check1.isSelected() && check2.isSelected())
{
font = new Font("Times New Roman", Font.BOLD + Font.ITALIC, 36);
repaint();
}
else if(check1.isSelected())
{
font = new Font("Times New Roman", Font.BOLD, 36);
repaint();
}
else if(check2.isSelected())
{
font = new Font("Times New Roman", Font.ITALIC, 36);
repaint();
}
else
{
font = new Font("Times New Roman", Font.PLAIN, 36);
repaint();
}
}
}
private class TextFieldListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
message = text1.getText();
repaint();
}
}
public static void main(String[] args)
{
JFrame frame = new MyProgram01("My Program 01");
frame.setVisible(true);
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

如何更改代码以立即更新到显示?

编辑:

它与 keyListener 一起使用,但我的程序只有在按下第二个键后才会开始显示。

例如,我输入abc,当我按b时,程序将开始显示a,当我按时,程序将开始显示a c,它显示 ab 并且缺少 c,除非我按 ENTER

这里是代码部分:

text1.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
message = text1.getText();
repaint();
}
});

最佳答案

向您的文本字段添加一个KeyListener。你可以这样做:

textField.addKeyListener(new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e){
message = textField.getText();
repaint();
}
});

DocumentListener 添加到文本字段的 Document。你可以这样做:

private JFrame getFrame(){
return this;
}
...

textField.getDocument().addDocumentListener(new DocumentListener(){

@Override
public void insertUpdate(DocumentEvent e) {
message = textField.getText();
getFrame().repaint();
}

@Override
public void removeUpdate(DocumentEvent e) {
message = textField.getText();
getFrame().repaint();
}

@Override
public void changedUpdate(DocumentEvent e) {
// on change
}

});

关于java - 如何从文本字段获取即时更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com