JTextArea->JTextPane 解决文字对齐方式的问题

Java Swing:使用JTextPane实现文字居中对齐
本文介绍了如何在Java Swing中利用JTextPane解决JTextArea文字居中对齐的问题。JTextPane允许设置样式,包括对齐方式、字体和颜色等,而且可以设置样式的作用范围。此外,还提及了设置文字区域背景透明的方法是通过setOpacity。提供了一个Coderanch上的示例代码作为参考。

转载自:http://www.blogjava.net/cerulean/archive/2010/03/10/314976.html

引子只是个小问题,JTextArea多行文本,想设置文字的对齐方式为居中对齐,却发现死活没有合适有效的方法,又试了JTextField和JLabel,都不理想。搜了一溜够看到JTextPane的解决方法,其实真是有点儿大材小用了。JTextPane里可以设置style,对齐方式、字体字号、颜色等等,并且还可以设置style的作用范围,挺方便的。另外,想把文字区域背景设为透明的也是在API中找了一通,才发现敢情就是setOpacity,呃,对这个单词实在是太不敏感了。。。。 

把在coderanch上搜的例子贴在这里吧,以防以后忘了:

 

import  java.awt. * ;  
import  javax.swing. * ;  
import  javax.swing.text. * ;  
   
public   class  Styling  
{  
    
public Styling()  
    
{  
        String text 
= "To refer to locations within the sequence, the " +  
                      
"coordinates used are the location between two " +  
                      
"characters.\nAs the diagram below shows, a location " +  
                      
"in a text document can be referred to as a position, " +  
                      
"or an offset. This position is zero-based.";  
   
        SimpleAttributeSet aSet 
= new SimpleAttributeSet();   
        StyleConstants.setForeground(aSet, Color.blue);  
        StyleConstants.setBackground(aSet, Color.orange);  
        StyleConstants.setFontFamily(aSet, 
"lucida bright italic");  
        StyleConstants.setFontSize(aSet, 
18);  
   
        SimpleAttributeSet bSet 
= new SimpleAttributeSet();  
        StyleConstants.setAlignment(bSet, StyleConstants.ALIGN_CENTER);  
        StyleConstants.setUnderline(bSet, 
true);  
        StyleConstants.setFontFamily(bSet, 
"lucida typewriter bold");  
        StyleConstants.setFontSize(bSet, 
24);  
   
        JTextPane textPane 
= new JTextPane();  
        textPane.setText(text);  
        StyledDocument doc 
= textPane.getStyledDocument();  
        doc.setCharacterAttributes(
105, doc.getLength()-105, aSet, false);  
        doc.setParagraphAttributes(
0104, bSet, false);  
   
        JFrame f 
= new JFrame();  
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        f.add(
new JScrollPane(textPane));  
        f.setSize(
400,400);  
        f.setLocation(
200,200);  
        f.setVisible(
true);  
    }
  
   
    
public static void main(String[] args)  
    
{  
        
new Styling();  
    }
  
}
  
JAVA项目作业3 基于DeepSeek API的智能聊天软件设计与实现 你需要设计并实现一个Java GUI桌面应用程序,核心功能是通过调用DeepSeek提供的API接口,实现用户与AI的实时文本对话。具体要求如下: 1. 核心功能需求 用户界面(GUI):使用Java SwingJavaFX构建简洁直观的聊天窗口(虚拟好友),包含以下组件:消息显示区域(如JTextArea/JFXListView):按时间顺序展示用户提问与AI回复的对话历史(需区分用户消息和AI消息的样式,例如不同颜色/对齐方式)。 ¡ 输入框(如JTextField/JFXTextField):用户输入待询问的问题。 ¡ 发送按钮(如JButton/JFXButton):点击后提交用户输入的内容至AI接口,并显示回复结果。 ¡ (可选扩展)清空对话按钮、输入提示标签等。 API对接与通信:通过HTTP协议向DeepSeek的开放API发送POST请求(需参考DeepSeek官方API文档,或教师提供的简化版接口说明),传递用户输入的文本内容。 ¡ 处理API响应:解析返回的JSON数据(通常包含AI生成的回复内容字段,如choices[0].message.content),提取AI回答并显示在对话区域。 ¡ (关键点)需正确配置API请求头(如Authorization: Bearer <API_KEY>、Content-Type: application/json),并通过程序内硬编码或配置文件(如properties文件)管理API密钥(教师可提供测试用的临时密钥)。 交互逻辑:用户点击发送按钮后,程序需将输入框内容作为“用户消息”构造符合API要求的JSON请求体(例如:{"messages": [{"role": "user", "content": "用户问题"}]}),并通过HTTP客户端(如Java原生HttpURLConnection、Apache HttpClient或OkHttp)发送至API地址。 ¡ 成功获取AI回复后,将对话记录(用户问题 + AI回答)追加到消息显示区域,并清空输入框以便继续对话。 ¡ 需处理常见异常(如网络连接失败、API密钥无效、JSON解析错误等),通过弹窗(JOptionPane)或状态栏提示用户(例如“网络错误,请检查连接”或“API调用失败:无效密钥”)。 2. 技术要求 开发语言:Java GUI框架:Java SwingJavaFX 或者任意你喜欢的。 网络通信:使用Java标准库(如HttpURLConnection)或第三方库(如Apache HttpClient)。 数据处理:使用org.json或Gson库解析API返回的JSON响应(或手动解析,但需保证健壮性)。 代码规范:遵循Java命名规范,合理划分类与方法(例如分离GUI逻辑、API通信逻辑、数据处理逻辑),添加必要的注释说明关键步骤。 3. 扩展功能(选做) 支持多轮对话上下文(将历史消息包含在API请求的messages数组中,模拟连续对话)。 添加“加载中”动画(如进度条或转圈图标),在等待AI回复时提升用户体验。 实现消息本地存储(如将对话历史保存到txt或json文件,支持重新加载)。 支持快捷键发送(如按下Enter键触发发送按钮)。 美化界面(如使用自定义字体、颜色主题或图标)。
11-06
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值