Java2D:在指定矩形内绘制文本

lzmailcn 2007-09-18 10:35:46
怎样在一个指定大小的矩形内绘制字串?比如,在一个150*20的矩形内绘制“我是中国人”?字体大小与据矩形的高宽自动确定。
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzmailcn 2007-12-26
  • 打赏
  • 举报
回复
自已解决,先根据选定的字体获得字高,再用设备上下文获得当前字体下一个字串的总宽,最后用仿射变换强制变换到指定的高及宽中。搞定!
cursor_wang 2007-10-01
  • 打赏
  • 举报
回复
象你这样的实现在java中应该比较复杂,光字体都有很多种,每种字体的长,宽都不一样,还有字符串的长,宽也不确定.在你指定大小的矩形内,如果符合长度,不一定符合宽度.所以比较难.给你个我以前写的可以设定字体及大小的简单程序.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class TxtFont extends JFrame implements ListSelectionListener{
JLabel l=new JLabel("示例文本 Simple Text");
JList j1=new JList();
JList j2=new JList();

JScrollPane jScrollPane1=new JScrollPane();
JScrollPane jScrollPane2=new JScrollPane();

JPanel p1=new JPanel();
JPanel p2=new JPanel();

TxtFont(){
this.setLayout(new BorderLayout());
this.add(p1,BorderLayout.NORTH);
this.add(p2,BorderLayout.SOUTH);
p1.add(l);

jScrollPane1.getViewport().add(j1);
p2.add(jScrollPane1);
jScrollPane2.getViewport().add(j2);
p2.add(jScrollPane2);

GraphicsEnvironment env=GraphicsEnvironment.getLocalGraphicsEnvironment();
String fontNames[]=env.getAvailableFontFamilyNames();
j1.setListData(fontNames);

String fontSizes[]={"9","10","11","12","14","16","18","20","24","26","28","30","32"};
j2.setListData(fontSizes);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("设置文本字体");
this.setSize(350,300);
this.setVisible(true);
j1.addListSelectionListener(this);
j2.addListSelectionListener(this);
}

public void valueChanged(ListSelectionEvent e){
if(e.getSource().equals(j2))
{
int newFontSize=Integer.parseInt((String)j2.getSelectedValue());
Font f=l.getFont();
Font newFont=new Font(f.getName(),f.getStyle(),newFontSize);
l.setFont(newFont);
}
else
{
String newFontName=(String)j1.getSelectedValue();
Font f=l.getFont();
Font newFont=new Font(newFontName,f.getStyle(),f.getSize());
l.setFont(newFont);
}
}

public static void main(String[] args){
new TxtFont();
}
}
joejoe1991 2007-09-30
  • 打赏
  • 举报
回复
drawString();
就可以。
majia1hao 2007-09-30
  • 打赏
  • 举报
回复
java.awt.Graphics.drawString()

java.awt.FontMetrics 算字符串长宽

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧