import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.*; class MyJFrame extends JFrame{ MyJFrame(String title,int x,int y,int w,int h){ setLayout(new FlowLayout()); setTitle(title); setBounds(x,y,w,h); setDefaultCloseOperation(EXIT_ON_CLOSE); } } public class Test1 { public static void main(String[] args) { MyJFrame myJFrame = new MyJFrame("我的窗口", 100, 100, 500, 400); myJFrame.setLayout(new BorderLayout()); JTextArea input = new JTextArea(10, 30); myJFrame.add(new JScrollPane(input)); JTextArea output = new JTextArea(10, 30); myJFrame.add(new JScrollPane(output)); input.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { output.setText(input.getText()); } @Override public void removeUpdate(DocumentEvent e) { output.setText(input.getText()); } @Override public void changedUpdate(DocumentEvent e) { output.setText(input.getText()); } }); myJFrame.setVisible(true); } }
时间: 2024-02-14 13:21:49 浏览: 20
这段代码是一个简单的 Java 程序,它创建了一个窗口并在窗口中添加了两个文本框(JTextArea),一个用于输入文本,另一个用于输出文本。当在输入文本框中输入内容时,输出文本框的内容会同步更新为输入文本框的内容。这个同步更新的功能是通过添加一个文档监听器(DocumentListener)实现的。文档监听器会监听输入文本框中的内容变化,并在内容变化时将输入文本框的内容更新到输出文本框中。整个程序的界面使用了 Java 的图形界面库 Swing 来实现。
相关问题
java创建两个面板A,B,两个面板中分别有一个文本框a,b,要求在b中获得a中输入的内容
可以使用监听器来实现在文本框a中输入内容时,将内容实时显示在文本框b中。
首先,需要在面板A中创建一个文本框a,并为其添加一个文本变化监听器。监听器会在文本框a中的内容发生变化时触发。在监听器中,需要获取文本框a中的内容,然后将内容设置到面板B中的文本框b中。
示例代码如下:
```
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class TestFrame extends JFrame {
private JTextField textA;
private JTextField textB;
public TestFrame() {
super("Test Frame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
JPanel panelA = new JPanel(new GridLayout(1, 1));
JPanel panelB = new JPanel(new GridLayout(1, 1));
textA = new JTextField();
textB = new JTextField();
// 为文本框a添加文本变化监听器
textA.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
updateText();
}
@Override
public void insertUpdate(DocumentEvent e) {
updateText();
}
@Override
public void removeUpdate(DocumentEvent e) {
updateText();
}
private void updateText() {
// 获取文本框a中的内容
String text = textA.getText();
// 设置内容到文本框b中
textB.setText(text);
}
});
panelA.add(textA);
panelB.add(textB);
getContentPane().add(panelA, "North");
getContentPane().add(panelB, "South");
setVisible(true);
}
public static void main(String[] args) {
new TestFrame();
}
}
```
在文本变化监听器中,我们首先获取文本框a中的内容,然后将其设置到文本框b中。由于文本变化监听器会在文本框a中的内容发生变化时触发,因此文本框b中的内容会实时更新。
生成以下代码:设计一个Java文本编辑器,实现类似于Windows记事本的功能
以下是一个简单的Java文本编辑器的代码实现,类似于Windows记事本的功能:
```java
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.DefaultEditorKit;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.*;
public class TextEditor extends JFrame implements ActionListener {
private JTextArea textArea;
private JLabel statusLabel;
private JFileChooser fileChooser;
private File currentFile;
public TextEditor() {
super("Java Text Editor");
// Create the text area
textArea = new JTextArea();
textArea.setFont(new Font("Consolas", Font.PLAIN, 14));
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
setWindowTitle("*");
}
@Override
public void removeUpdate(DocumentEvent e) {
setWindowTitle("*");
}
@Override
public void changedUpdate(DocumentEvent e) {
setWindowTitle("*");
}
});
// Create the scroll pane
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// Create the status label
statusLabel = new JLabel("Ready");
// Create the file chooser
fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Text files", "txt"));
// Create the menu bar
JMenuBar menuBar = new JMenuBar();
// Create the file menu
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
// Add the new menu item
JMenuItem newMenuItem = new JMenuItem("New");
newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
newMenuItem.addActionListener(this);
fileMenu.add(newMenuItem);
// Add the open menu item
JMenuItem openMenuItem = new JMenuItem("Open");
openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
openMenuItem.addActionListener(this);
fileMenu.add(openMenuItem);
// Add the save menu item
JMenuItem saveMenuItem = new JMenuItem("Save");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
saveMenuItem.addActionListener(this);
fileMenu.add(saveMenuItem);
// Add the save as menu item
JMenuItem saveAsMenuItem = new JMenuItem("Save As...");
saveAsMenuItem.addActionListener(this);
fileMenu.add(saveAsMenuItem);
// Add the print menu item
JMenuItem printMenuItem = new JMenuItem("Print");
printMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
printMenuItem.addActionListener(this);
fileMenu.add(printMenuItem);
// Add the exit menu item
JMenuItem exitMenuItem = new JMenuItem("Exit");
exitMenuItem.addActionListener(this);
fileMenu.add(exitMenuItem);
// Add the file menu to the menu bar
menuBar.add(fileMenu);
// Create the edit menu
JMenu editMenu = new JMenu("Edit");
editMenu.setMnemonic(KeyEvent.VK_E);
// Add the cut menu item
JMenuItem cutMenuItem = new JMenuItem(new DefaultEditorKit.CutAction());
cutMenuItem.setText("Cut");
cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
editMenu.add(cutMenuItem);
// Add the copy menu item
JMenuItem copyMenuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
copyMenuItem.setText("Copy");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
editMenu.add(copyMenuItem);
// Add the paste menu item
JMenuItem pasteMenuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
pasteMenuItem.setText("Paste");
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
editMenu.add(pasteMenuItem);
// Add the select all menu item
JMenuItem selectAllMenuItem = new JMenuItem("Select All");
selectAllMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
selectAllMenuItem.addActionListener(this);
editMenu.add(selectAllMenuItem);
// Add the edit menu to the menu bar
menuBar.add(editMenu);
// Create the format menu
JMenu formatMenu = new JMenu("Format");
formatMenu.setMnemonic(KeyEvent.VK_O);
// Add the font menu item
JMenuItem fontMenuItem = new JMenuItem("Font...");
fontMenuItem.addActionListener(this);
formatMenu.add(fontMenuItem);
// Add the color menu item
JMenuItem colorMenuItem = new JMenuItem