qq_37639162 2020-09-27 16:48 采纳率: 100%
浏览 371
已采纳

这个为什么会报红的,求解答,

代码片第一行 public DataReceiver()和倒数11行frame.getContentPane().add(new DataReceiver());的DataReceiver分别是Invalid method declaration; return type required和Cannot resolve symbol 'DataReceiver'
以下:
package com.tur.demo;

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

class DataReceiver extends JPanel {
private List values; // 保存接收到的数据的容器.
private static final int MAX_VALUE = 200; // 接收到的数据的最大值.
private static final int MAX_COUNT_OF_VALUES = 50; // 最多保存数据的个数.

public DataReceiver() {
    values = Collections.synchronizedList(new ArrayList<Integer>());

    // 使用一个线程模拟产生数据.
    new Thread(new Runnable() {
        @Override
        public void run() {
            Random rand = new Random();

            try {
                while (true) {
                    addValue(rand.nextInt(MAX_VALUE)); // 产生一个数据,并模拟接收并放到容器里.
                    repaint();
                    Thread.sleep(100);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    int w = getWidth();
    int h = getHeight();
    int xDelta = w / MAX_COUNT_OF_VALUES;
    int length = values.size();

    for (int i = 0; i < length - 1; ++i) {
        g2d.drawLine(xDelta * (MAX_COUNT_OF_VALUES - length + i),h-normalizeValueForYAxis(values.get(i), h),
                xDelta * (MAX_COUNT_OF_VALUES - length + i + 1),h-normalizeValueForYAxis(values.get(i + 1), h));
    }
}

/**
 * 接收到的数据放入内存.
 * @param value
 */
private void addValue(int value) {
    // 循环的使用一个接收数据的空间.
    // 最好是实现一个循环数组,而不是偷懒的使用ArrayList.
    if (values.size() > MAX_COUNT_OF_VALUES) {
        values.remove(0);
    }

    values.add(value);
}

/**
 * 规一化y轴方向的值. 使得value在y轴的值为[0, height]之间.
 *
 * @param value
 * @param height
 * @return
 */
private int normalizeValueForYAxis(int value, int height) {
    return (int) ((double) height / MAX_VALUE * value);
}

private static void createGuiAndShow() {
    JFrame frame = new JFrame("");

    frame.getContentPane().add(new DataReceiver());

    // Set frame's close operation and location in the screen.
    frame.setDefaultCloseOperation(JFrame.EXIT_O

N_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
    createGuiAndShow();
}

}
图片说明

图片说明

  • 写回答

1条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2020-09-27 17:17
    关注

    发一个截图上来就这么难吗?鼠标移到红色波浪线上,然后看看错误提示
    图一:告诉你这个方法需要一个返回值,或者说需要定义一个返回类型,看你写的又不是构造函数
    图二:调用方法不能直接new ,如果在同一个类中,直接用就行了,DataReceiver()
    如果不在同一个类中,那么就要先new 类,然后通过类.DataReceiver()调用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图