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

代码片第一行 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();

}

}
图片说明

图片说明

回答

发一个截图上来就这么难吗?鼠标移到红色波浪线上,然后看看错误提示

图一:告诉你这个方法需要一个返回值,或者说需要定义一个返回类型,看你写的又不是构造函数

图二:调用方法不能直接new ,如果在同一个类中,直接用就行了,DataReceiver()

如果不在同一个类中,那么就要先new 类,然后通过类.DataReceiver()调用

以上是 这个为什么会报红的,求解答, 的全部内容, 来源链接: utcz.com/a/47516.html

回到顶部