Java 如何使用ActionListener在画布中绘制形状?

Java 如何使用ActionListener在画布中绘制形状?,java,swing,jframe,jpanel,paint,Java,Swing,Jframe,Jpanel,Paint,我有一个程序,有4个文本字段和一个按钮来绘制矩形,文本字段用于输入数字(x,y,x1,y1)和添加它们的按钮(addO),我需要知道如何使用动作监听器在画布中使用paint()方法进行绘制 这个问题是开放和模糊的,答案很大程度上取决于缺少的实施细节 从本质上讲,从JTextField获取值就像在字段实例上调用getText一样简单 private JTextField field; //... field = new JTextField(10); add(field); //... Strin

我有一个程序,有4个文本字段和一个按钮来绘制矩形,文本字段用于输入数字(x,y,x1,y1)和添加它们的按钮(addO),我需要知道如何使用动作监听器画布中使用paint()方法进行绘制

这个问题是开放和模糊的,答案很大程度上取决于缺少的实施细节

从本质上讲,从
JTextField
获取值就像在字段实例上调用
getText
一样简单

private JTextField field;
//...
field = new JTextField(10);
add(field);
//...
String text = field.getText();
将值转换为
int
需要使用
Integer.parseInt(text)
。如果该值不是整数值,则会引发
NumberFormatException
错误。同样,您也可以使用一个

使用
ActionListener
的简单方法是将
ActionListener
的实例附加到
JButton

JButton doStuff = new JButton("Do Stuff");
doStuff.addActionListene(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        // See previous comments about extract the field values...
    }
});
Swing中的绘制通常通过覆盖从
JComponent
扩展而来的组件的
paintComponent
来实现,例如,通常类似于
JPanel

用这种方法你可以画出你需要的任何东西

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawRect(x1, y1, x2, y2);
}
比如说

见:


有关更多详细信息

欢迎使用堆栈溢出!一个实际的问题需要更少的猜测和更好的回答。这个问题很模糊。我可以建议你看一看,还是不回答你的问题。我想把数字从文本字段移到动作监听器的按钮上,用尽可能简单的画法画一个形状。数字代表什么?你想画什么形状?这是不连贯的概念吗?简单的方形或椭圆形如何在画布中显示形状?“Swing中的绘制通常是通过覆盖从JComponent扩展而来的组件的paintComponent来实现的,通常类似于JPanel,例如“是的,我知道,画布”与2d相同??如果我不能在画布中显示,我怎么能在2d中显示它们?我不明白。重写
JPanel
之类的
paintComponent
方法并绘制形状,如上一个代码段所示