import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.Dimension;
import javax.swing.JPanel;//下面是测试类TestFontMetrics
public class TestFontMetrics extends JFrame
{
// 构造方法
public TestFontMetrics()
{
MessagePanel messagePanel = new MessagePanel("欢迎使用字体对象");
// 设置字体、风格和大小
messagePanel.setFont(new Font("SansSerif", Font.BOLD, 20));
// 使字符串居于面板中央
messagePanel.setCentered(true);
getContentPane().add(messagePanel);
} // 主方法
public static void main(String[] args)
{
TestFontMetrics frame = new TestFontMetrics();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setTitle("测试FontMetrics");
frame.setVisible(true);
}
}//下面是面板类MessagePanel: 在面板上显示字符串
class MessagePanel extends JPanel
{
private String message = "欢迎使用字体对象"; //要显示的字符串
// (x, y)显示字符串的位置
private int xCoordinate = 20;
private int yCoordinate = 20;
// 标识字符串是否显示在面板的中央
private boolean centered;
// 构造方法
public MessagePanel(){ } // 用字符串初始化的构造方法
public MessagePanel(String message)
{
this.message = message;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
} public int getXCoordinate()
{
return xCoordinate;
} public void setXCoordinate(int x)
{
this.xCoordinate = x;
} public int getYCoordinate()
{
return yCoordinate;
} public void setYCoordinate(int y)
{
this.yCoordinate = y;
} public boolean isCentered()
{
return centered;
}
public void setCentered(boolean centered)
{
this.centered = centered;
} public void paintComponent(Graphics g) //重写组件中的方法
{
super.paintComponent(g);
if (centered)
{
// 获取面板的字体尺度
FontMetrics fm = g.getFontMetrics();
// 把字符串显示在面板中央时,字符串的坐标值(xCoordinate, yCoordinate)
int w = fm.stringWidth(message); // 获取字符串的宽度
int h = fm.getAscent(); // 获取字符的Ascent值
xCoordinate = (getWidth()-w)/2;
yCoordinate = (getHeight()+h)/2;
}
g.drawString(message, xCoordinate, yCoordinate);
}
public Dimension getPreferredSize()
{
return new Dimension(200, 100);
}
public Dimension getMinimumSize()
{
return new Dimension(200, 100);
}
}
请问 怎么把“欢迎使用字体对象”竖直显示。。
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.Dimension;
import javax.swing.JPanel;//下面是测试类TestFontMetrics
public class TestFontMetrics extends JFrame
{
// 构造方法
public TestFontMetrics()
{
MessagePanel messagePanel = new MessagePanel("欢迎使用字体对象");
// 设置字体、风格和大小
messagePanel.setFont(new Font("SansSerif", Font.BOLD, 20));
// 使字符串居于面板中央
messagePanel.setCentered(true);
getContentPane().add(messagePanel);
} // 主方法
public static void main(String[] args)
{
TestFontMetrics frame = new TestFontMetrics();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setTitle("测试FontMetrics");
frame.setVisible(true);
}
}//下面是面板类MessagePanel: 在面板上显示字符串
class MessagePanel extends JPanel
{
private String message = "欢迎使用字体对象"; //要显示的字符串
// (x, y)显示字符串的位置
private int xCoordinate = 20;
private int yCoordinate = 20;
// 标识字符串是否显示在面板的中央
private boolean centered;
// 构造方法
public MessagePanel(){ } // 用字符串初始化的构造方法
public MessagePanel(String message)
{
this.message = message;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
} public int getXCoordinate()
{
return xCoordinate;
} public void setXCoordinate(int x)
{
this.xCoordinate = x;
} public int getYCoordinate()
{
return yCoordinate;
} public void setYCoordinate(int y)
{
this.yCoordinate = y;
} public boolean isCentered()
{
return centered;
}
public void setCentered(boolean centered)
{
this.centered = centered;
} public void paintComponent(Graphics g) //重写组件中的方法
{
super.paintComponent(g);
if (centered)
{
// 获取面板的字体尺度
FontMetrics fm = g.getFontMetrics();
// 把字符串显示在面板中央时,字符串的坐标值(xCoordinate, yCoordinate)
int w = fm.stringWidth(message); // 获取字符串的宽度
int h = fm.getAscent(); // 获取字符的Ascent值
xCoordinate = (getWidth()-w)/2;
yCoordinate = (getHeight()+h)/2;
}
g.drawString(message, xCoordinate, yCoordinate);
}
public Dimension getPreferredSize()
{
return new Dimension(200, 100);
}
public Dimension getMinimumSize()
{
return new Dimension(200, 100);
}
}
请问 怎么把“欢迎使用字体对象”竖直显示。。
我也只能想到这个,呵呵