java 错误 非法的表达式开始

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:51:44
这里是代码

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class drawPanel extends JPanel
{
private JButton push;

public PushCounterPanel ()
{
push = new JButton ("draw!");

push.addActionListener (new ButtonListener());

add (push);
setPreferredSize (new Dimension(300, 40));
setBackground (Color.cyan);
}

private class ButtonListener implements ActionListener
{

public void actionPerformed (ActionEvent event)
{
public void paintComponent (Graphics page)
{
super.paintComponent (page);
page.setColor (Color.black);
page.drawOval (60, 60, 15, 7);

}
}
}}
就是下面这部分不写进public void actionPerformed (ActionEvent event)里面
但我要根据按钮响应来执行画圆这个动作啊,能不能根据按钮响应来决定圆的参数如大小 颜色等

关于JPanel与JFrame的层次关系你还没有弄明白.
首先,JPanel只是一个组件,其继承关系与下图.它不是一个窗口,所以它必须放在一个如JFrame那样的窗口中才能显示.不然你只继承了JPanel有了main主函数也不能显示得到啊.它要放在某个能让它显示的地方才行啊.所以在此,实现了drawPanel后,我还建了一个继承了JFrame的类,这个类有主函数用来测试drawPanel的画图.

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel

按钮也是放在了drawPanelTest类,并将它放在另一个JPanel (buttonPanel)中,这样做是为了好看,这样两个面板放在一个窗口的容器中,这样才能显示.现在是你按下按钮就能画一个圆,这个圆的属性在paintComponent方法中已经设好了,我将颜色位置都设为随机的了,所以每一次画都不一样.
其实可以根据按钮响应来决定圆的参数大小等的,但要加一此组件以获得这些属性值,如加一些输入框,等等.这要看你想如何实现了.

-----------------drawPanel.java---------------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class drawPanel extends JPanel {

public drawPanel(){
this.setVisible(false); //开始时设为不可见的.
}
public void paintComponent(Graphics g){
super.paintComponent(g);

//设置一个随机的颜色
Color c