Swing 作为 Java 桌面开发的经典框架,其组件体系对于理解事件驱动模型依然很有价值。这里展示了一个简单的交互场景:通过单行文本框输入内容,点击按钮追加到多行文本域中,同时支持直接读取多行文本域的内容。
在布局上,我们使用了 BorderLayout 将界面分为上下两部分。上方放置带滚动条的多行文本区域,下方则是输入控件和按钮组合。这种结构清晰且易于扩展。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingTest {
public static void main(String[] args) {
// 创建主窗口
JFrame frame = new JFrame("Swing 文本域测试");
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 主面板,使用边界布局
JPanel mainPanel = new JPanel(new BorderLayout());
// 创建多行文本框并配置属性
JTextArea textArea = new JTextArea(8, 12);
textArea.setLineWrap(true); // 启用自动换行
textArea.setPreferredSize(new Dimension(300, 200));
mainPanel.add( (textArea), BorderLayout.NORTH);
();
printButton.addActionListener(e -> System.out.println(textArea.getText()));
mainPanel.add(printButton, BorderLayout.SOUTH);
();
();
textField.setPreferredSize( (, ));
inputPanel.add(textField);
();
sendButton.addActionListener(e -> {
System.out.println( + textField.getText());
textArea.append(textField.getText() + );
});
inputPanel.add(sendButton);
mainPanel.add(inputPanel, BorderLayout.CENTER);
frame.setContentPane(mainPanel);
frame.setVisible();
}
}


