我有一个带有两个textareas和一个按钮的Java程序。我想让用户使用触控笔或鼠标写一个textarea,当他/她点击按钮时,绘制的内容应发送到textarea no 2.
所以用户正在写的textarea,我给了一个带有paintComponent方法的mousemotion监听器。
当我运行应用程序时,我意识到texarea方法getText()
和setText()
无法设置或获取绘制的内容。
我有没有办法完成上述任务?我也尝试了JPanel
,但它没有setContent()
方法。
我感谢任何帮助。
这是我的第一个textarea ,用户正在使用touchpen写作。
public class Area1 extends JTextArea {
int pointcount = 0;
Point[] points = new Point[10000];
public Area1() {
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent event) {
if (pointcount < points.length) {
points[pointcount] = event.getPoint();
++pointcount;
repaint();
}
}
});
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < pointcount; i++) {
g.fillOval(points[i].x, points[i].y, 4, 4);
}
}
}
这是我的整体应用 textarea2 和按钮
public class Handwriting extends JFrame {
private JTextArea area2;
private JButton b1;
Area1 area1;
public Handwriting() {
Box box = Box.createHorizontalBox();
area1 = new Area1();
area1.setRows(30);
area1.setColumns(30);
area2 = new JTextArea(30, 30);
b1 = new JButton("Copy");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == b1) {
area2.setText(area1.getText());
}
}
});
box.add(area1);
box.add(b1);
box.add(area2);
add(box);
}
public static void main(String[] args) {
Handwriting hand = new Handwriting();
hand.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
hand.setSize(500, 500);
hand.setVisible(true);
}
}
答案 0 :(得分:0)
一种可能的解决方案是将一个类作为另一个类的内部类,这样就可以访问私有实例字段