- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当程序执行时,错误显示 void type not allowed here Program error
resultField.setText((ai.inOrder(ai.root))); 导致上述错误
我希望数组中的内容通过 BST 类传递。 java 然后在 Result TextField 中返回。
如何解决这个问题?
下面是代码
主要
package p3gui;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.event.*;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
public class P3GUI extends JFrame {
JFrame f = new JFrame("Binary Search Tree Sort");// Title
private final JButton evaluate;
private final JLabel textfieldLabel;
private final JTextField entryField;
private final JLabel resutfieldlabel;
private final JLabel radioLabel1;
private final JLabel radioLabel2;
private final JTextField resultField;
private final JRadioButton ascending;
private final JRadioButton descending;
private final JRadioButton integer;
private final JRadioButton fraction;
private final ButtonGroup radioButtons = new ButtonGroup();
private final ButtonGroup radioButtons2 = new ButtonGroup();
private final JOptionPane popup = new JOptionPane();
P3GUI()
{
f.setSize(425, 375);
f.setLayout(null);//using no layout managers
f.setVisible(true);//making the frame visible //window size
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
radioLabel2 = new JLabel(" Numeric Type ");
f.add(radioLabel2);
radioLabel2.setBounds(225, 275, 100, 15);
integer = new JRadioButton(" Integer ");
radioButtons.add(integer);
f.add(integer);
integer.setBounds(225, 295, 160, 15);
fraction = new JRadioButton(" Fraction ");
radioButtons.add(fraction);
f.add(fraction);
fraction.setBounds(225, 315, 160, 15);
radioLabel1 = new JLabel(" Sorted Order ");
f.add(radioLabel1);
radioLabel1.setBounds(10, 275, 100, 15);
ascending = new JRadioButton(" Ascending ");
radioButtons2.add(ascending);
f.add(ascending);
ascending.setBounds(10, 295, 160, 15);
descending = new JRadioButton(" Descending ");
radioButtons2.add(descending);
f.add(descending);
descending.setBounds(10, 315, 160, 15);
textfieldLabel = new JLabel(" Original List ");
f.add(textfieldLabel);
textfieldLabel.setBounds(42, 10, 160, 25);
entryField = new JTextField("");
//entryField.addActionListener(this);//ActionListener
f.add(entryField);
entryField.setBounds(118, 10, 245, 25);
evaluate = new JButton(" Perform Sort ");
f.add(evaluate);
evaluate.setBounds(137, 180, 130, 30);
resutfieldlabel = new JLabel(" Sorted List ");
f.add(resutfieldlabel);
resutfieldlabel.setBounds(52, 100, 100, 25);
resultField = new JTextField("");
//resultField.addActionListener(this);//ActionListener
resultField.setEditable(false);
f.add(resultField);
resultField.setBounds(125, 100, 220, 25);
evaluate.addActionListener(new getItListener());
}//END of P3GUI
class getItListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String text;
/*text = entryField.getText().trim(). replaceAll(" ","");
String textArray[] = text.split(" ");*/
text = getAmtValue();
String textArray[] = text.split(" ");
if (ascending.isSelected() && integer.isSelected()) {
BST ai = new BST(new Integer(textArray[0]));
for (int i = 1; i < textArray.length; i++) {
ai.insert(ai.root, new Integer(textArray[i]));
}
resultField.setText((ai.inOrder(ai.root)));
} else if (descending.isSelected() && integer.isSelected()) {
//Do Something
} else if (ascending.isSelected() && fraction.isSelected()) {
// Do Something
} else if (descending.isSelected() && fraction.isSelected()) {
// Do Something
} else {
JOptionPane.showMessageDialog(popup, "Please enter valid
amount.");
}
}
}
public String getAmtValue() {
try {
return (entryField.getText().trim().replaceAll(" ", ""));
} catch (NumberFormatException e) {
System.out.println("This is not a number");
eraseTextField();
return "";
}
}
//clears text field
public void eraseTextField() {
entryField.setText("");
entryField.requestFocus();
}
public static void main(String[] args) {
P3GUI p3GUI;
p3GUI = new P3GUI();
}
}
包 p3gui;
class Node {
public Object element;
public Node left;
public Node right;
// CONSTRUCTORS
public Node(Object theElement) {
this(theElement, null, null);
}
public Node(Object theElement, Node lLink, Node rLink) {
element = theElement;
this.left = lLink;
this.right = rLink;
}
}
BST.Java
public class BST {
public Node root;
public BST(Object x) { // ONLY CONSTRUCTOR//
root = new Node(x);
}
public Node insert(Node node, Integer x) {
if (node == null) {
return node = new Node(x);
}
if (x < (Integer) node.element) {
node.left = insert(node.left, x);
} else {
node.right = insert(node.right, x);
}
return node;
}
/**
*
* @param node
*/
public void inOrder(Node node) {
if (node != null) {
inOrder(node.left);
inOrder(node.right);
}
}
/**
*
* @param node
*/
public void descOrder(Node node) {
if (node != null) {
descOrder(node.right);
descOrder(node.left);
}
}
}
最佳答案
你的问题是你的 inOrder 方法是一个 void 方法。您无法使用 void 方法设置字段的文本值,因为 void 方法不会返回任何内容。
如果 inOrder 方法返回一个字符串,那就没问题了。
关于java - 将 public void 方法设置为 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581723/
作为作业的一部分,我正在尝试创建一个用户级线程库,如 pthreads。 为了处理线程之间的上下文切换,我使用了“swapcontext”函数。在使用它之前,我必须使用“makecontext”函数创
我是一名初级 C++ 程序员,我正在 Linux 机器上编程。 我遇到了这个错误: cannot convert ‘void* (Network::*)(void*)’ to ‘void* (*)(v
我知道,例如 void *(*myFuncName)(void*) 是一个函数指针,它接受并返回 void*。 这是一个有两个参数的指针吗?void 指针是该类型的另一个返回 void* 和 void
所以我被告知它们彼此几乎相同 void function1 (void(func)(int), int arg){ func(arg); } void function2 (void(*fun
我目前正在 GNU Radio 上开发一个 bloc,我想使用一个线程。该线程用于从 UDP 套接字获取数据,因此我可以在我的 GNU Radio 集团中使用它。 “一般工作”功能是执行所有信号和数据
我正在尝试在主函数中创建一个线程并通过我的线程调用另一个类的函数。 在 main.cpp 中: SocketHandler *callserver; pthread_t thread1; pthrea
我正在使用pthread 为我自己实现线程类。所以,我创建了 Thread 类如下: class Thread { public: Thread() { } virtual void*
我收到上述警告并理解它,但就是不知道如何解决它。我的代码在下面,但基本上我所做的是在结构中存储一个函数指针,并在我从 main.c 调用的另一个函数中初始化该结构。当我将代码与默认函数(即 free(
在我的 android 应用程序中,我在 doInBackground 中执行一些操作通过扩展 AsyncTask类(class)。 (我在这个类中执行任何 UI 都没用) 这是正确使用 AsyncT
我在 GNU 编译器集合中使用 C。所以我需要将函数指针传递给一个函数。现在有两种我想要处理的可接受的函数指针原型(prototype): void function(void); 和 void fu
我正在尝试使用“CameraManager”类创建一个新线程,但出现以下错误: cannot convert '*void(CameraManager:: * )(void*) to void*( *
我想构建一个可以隐藏线程创建的“IThread”类。子类实现“ThreadMain”方法并使其自动调用,如下所示: class IThread { public: void BeginThre
我不明白什么 void (**)(void *, const char *) /* ^^ why are there 2 asterisks here? 意思是,它是一个指向函数的指针,但我失败
我必须将“risposta”类型的参数“r”发送到函数 RispostaServer。编译器给我:invalid conversion void*(*)() to void*(*)(void*) 这是
所以我目前正在使用,或者至少正在尝试编写一个利用 this C pthread threadpool library. 的程序 值得注意的是 thpool.h 中的以下函数: int thpool_a
我正在尝试使用 void* 指针将不同的对象存储在一个全局表中。问题是如何取回 void* 对象。如果我有一个公共(public)基类,比如 Object ,我总是可以将 void* 指针存储为 Ob
我是一名 C 程序员(在 linux 上),但现在我有一个关于 C++ 的项目,并且有一个问题。 这里是示例代码 g_action.sa_sigaction = (void(*)(int,siginf
class Scoreget{ private: //some variables public: Scoreget(){ //
这个问题在这里已经有了答案: Is there a difference between foo(void) and foo() in C++ or C? (4 个答案) func() vs fun
我正在尝试使用 SDL 和 SDL_Mixer 为音频创建一个 C++ 应用程序,并且正在尝试遵循 this教程。但是,使用 SDL_Mixer 的 Mix_HookMusicFinished() 不
我是一名优秀的程序员,十分优秀!