private JTextArea text = new JTextArea(6,40);

本文介绍了一个简单的 Java JTextArea 使用示例。通过创建 JTextArea 实例并设置初始大小为 6 行 40 列,然后向 JTextArea 中追加文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private JTextArea text = new JTextArea(6,40);
text.append(“单击了”+e.getActionCommand()+”\n”);

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; import java.util.regex.*; public class WebCrawlerApp extends JFrame { // 界面组件 private JTextField urlField = new JTextField(40); private JTextArea resultArea = new JTextArea(20, 60); private JButton fetchBtn = new JButton("抓取网页"); private JButton batchBtn = new JButton("批量处理"); private JButton saveSensitiveBtn = new JButton("保存敏感词"); // 数据存储 private Set<String> visitedUrls = new HashSet<>(); private Set<String> sensitiveWords = new HashSet<>(); private Set<String> foundEmails = new HashSet<>(); private Map<String, Set<String>> sensitiveRecords = new HashMap<>(); public WebCrawlerApp() { super("简易网页爬虫"); setupUI(); loadSensitiveWords("sensitive_words.txt"); } private void setupUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(800, 600); // 主布局 JPanel mainPanel = new JPanel(new BorderLayout(10, 10)); // 顶部输入区域 JPanel topPanel = new JPanel(); topPanel.add(new JLabel("网址:")); topPanel.add(urlField); topPanel.add(fetchBtn); topPanel.add(batchBtn); topPanel.add(saveSensitiveBtn); // 结果区域 JScrollPane scrollPane = new JScrollPane(resultArea); resultArea.setEditable(false); // 事件监听 fetchBtn.addActionListener(e -> fetchSingleUrl()); batchBtn.addActionListener(e -> batchProcess()); saveSensitiveBtn.addActionListener(e -> saveSensitiveRecords()); mainPanel.add(topPanel, BorderLayout.NORTH); mainPanel.add(scrollPane, BorderLayout.CENTER); add(mainPanel); } // ================= 核心功能实现 ================= private void fetchSingleUrl() { String url = urlField.getText().trim(); if (url.isEmpty()) return; processUrl(url); } private void batchProcess() { JFileChooser chooser = new JFileChooser(); if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File file = chooser.getSelectedFile(); try (BufferedReader reader = new BufferedReader(new FileReader(file))) { String url; while ((url = reader.readLine()) != null) { urlField.setText(url); processUrl(url); } } catch (Exception e) { resultArea.append("\n批量处理错误: " + e.getMessage()); } } } private void processUrl(String urlStr) { try { // 避免重复爬取 if (visitedUrls.contains(urlStr)) { resultArea.append("\n[跳过] 已访问URL: " + urlStr); return; } visitedUrls.add(urlStr); // 处理相对地址 URL baseUrl = new URL(urlStr); URLConnection conn = baseUrl.openConnection(); conn.setRequestProperty("User-Agent", "Mozilla/5.0"); conn.setConnectTimeout(5000); // 猜测编码 String charset = "UTF-8"; String contentType = conn.getContentType(); if (contentType != null) { for (String param : contentType.replace(" ", "").split(";")) { if (param.startsWith("charset=")) { charset = param.split("=")[1]; break; } } } // 读取内容 StringBuilder content = new StringBuilder(); try (BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream(), charset))) { String line; while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } } // 验证HTML内容 if (!content.toString().toLowerCase().contains("<html")) { resultArea.append("\n[警告] 非HTML内容: " + urlStr); return; } // 提取纯文本和敏感词 String plainText = extractPlainText(content.toString()); Set<String> detectedWords = detectSensitiveWords(plainText); sensitiveRecords.put(urlStr, detectedWords); // 提取Email extractEmails(content.toString()); // 显示结果 resultArea.append("\n\n===== 抓取结果 =====\n"); resultArea.append("URL: " + urlStr + "\n"); resultArea.append("编码: " + charset + "\n"); resultArea.append("敏感词: " + detectedWords.size() + "个\n"); resultArea.append("发现Email: " + foundEmails.size() + "个"); } catch (Exception e) { resultArea.append("\n[错误] " + e.getMessage()); } } // ================= 数据处理方法 ================= private String extractPlainText(String html) { // 简易HTML标签去除 return html.replaceAll("<[^>]+>", " "); } private Set<String> detectSensitiveWords(String text) { Set<String> detected = new HashSet<>(); for (String word : sensitiveWords) { if (text.toLowerCase().contains(word.toLowerCase())) { detected.add(word); } } return detected; } private void extractEmails(String content) { Pattern pattern = Pattern.compile("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b"); Matcher matcher = pattern.matcher(content); while (matcher.find()) { foundEmails.add(matcher.group()); } } private void loadSensitiveWords(String filename) { try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { String line; while ((line = reader.readLine()) != null) { sensitiveWords.add(line.trim().toLowerCase()); } resultArea.append("已加载敏感词: " + sensitiveWords.size() + "个"); } catch (Exception e) { resultArea.append("敏感词库加载失败: " + e.getMessage()); } } private void saveSensitiveRecords() { try (PrintWriter writer = new PrintWriter("sensitive_records.txt")) { for (Map.Entry<String, Set<String>> entry : sensitiveRecords.entrySet()) { writer.println("URL: " + entry.getKey()); writer.println("敏感词: " + String.join(", ", entry.getValue())); writer.println("----------------------"); } resultArea.append("\n敏感词记录已保存到 sensitive_records.txt"); } catch (Exception e) { resultArea.append("\n保存失败: " + e.getMessage()); } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { WebCrawlerApp app = new WebCrawlerApp(); app.setVisible(true); }); } } 帮我优化这段代码
最新发布
06-08
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Java_3 extends JFrame implements ActionListener{ private double x=0; private double y=0; JTextField xval = new JTextField(10); JButton calcBtn = new JButton("����"); JTextArea result = new JTextArea(10,20); boolean isAngleRad=true; JButton angleUnitBtn=new JButton("��ɽǶ�"); void initFrame(){ Container content = getContentPane(); content.setLayout(new BorderLayout()); JPanel calcPanel = new JPanel(); calcPanel.setLayout(new FlowLayout()); //***************************Found********************* calcPanel.add( new JLabel("�ǵ�ֵ") ); calcPanel.add(xval); calcPanel.add(calcBtn) ; calcPanel.add(angleUnitBtn); content.add(calcPanel,"North"); calcBtn.addActionListener(this); //***************************Found********************* angleUnitBtn.addActionListener(this) ; content.add(result,"Center"); //***************************Found********************* result.setEditable(false); } public Java_3(){ super("�������Һ���"); setSize(500,200); initFrame(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e){ if (e.getSource()== calcBtn){ String str; if(isAngleRad) { x=Double.parseDouble(xval.getText()); str="cos("+x+")="; }else { x=Double.parseDouble(xval.getText())/180*3.1415926; //***************************Found********************* str="cos("+ xval.getText() +"*3.14159/180)="; }; y=Math.cos(x); result.append(str+y+'\n'); }else if(e.getSource()== angleUnitBtn){ if(isAngleRad) angleUnitBtn.setText("��ɻ���");
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值