import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
public class TextLayoutF extends JFrame { private JPanel contentPane;
JTextField t1 = new JTextField();
JTextField t2 = new JTextField();
miaohong mh=new miaohong(); /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TextLayoutF frame = new TextLayoutF();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public TextLayoutF() {
t2.setBounds(160, 12, 104, 27);
t2.setColumns(10);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null); t1.setBounds(27, 12, 104, 27);
contentPane.add(t1);
t1.setColumns(10);
mh.setBounds(36, 62, 159, 217);
contentPane.add(mh);
contentPane.add(t2);
t1.addKeyListener(new T1A());
}
class T1A extends KeyAdapter {
public void keyTyped(KeyEvent e) {
t2.setText(t1.getText());
mh.s=t1.getText();
}
}
class miaohong extends JComponent{
String s; public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
drawPage(g2);
}
public void drawPage(Graphics2D g2)
{
FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("Serif", Font.PLAIN, 72);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout(s, f, context);//无法获取KeyAdapter中的s的值???????????
AffineTransform transform = AffineTransform.getTranslateInstance(0, 72);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false); g2.draw(clipShape);
g2.clip(clipShape); } }
}
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
public class TextLayoutF extends JFrame { private JPanel contentPane;
JTextField t1 = new JTextField();
JTextField t2 = new JTextField();
miaohong mh=new miaohong(); /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TextLayoutF frame = new TextLayoutF();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public TextLayoutF() {
t2.setBounds(160, 12, 104, 27);
t2.setColumns(10);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null); t1.setBounds(27, 12, 104, 27);
contentPane.add(t1);
t1.setColumns(10);
mh.setBounds(36, 62, 159, 217);
contentPane.add(mh);
contentPane.add(t2);
t1.addKeyListener(new T1A());
}
class T1A extends KeyAdapter {
public void keyTyped(KeyEvent e) {
t2.setText(t1.getText());
mh.s=t1.getText();
}
}
class miaohong extends JComponent{
String s; public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
drawPage(g2);
}
public void drawPage(Graphics2D g2)
{
FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("Serif", Font.PLAIN, 72);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout(s, f, context);//无法获取KeyAdapter中的s的值???????????
AffineTransform transform = AffineTransform.getTranslateInstance(0, 72);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false); g2.draw(clipShape);
g2.clip(clipShape); } }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货