import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.IOException;
public class PictureViewer {
final static int MIN_NUMBER = 1;
final static int MAX_NUMBER = 8;
static int image_number = 1;
public static void main(String[] args) {
showMenu();
}
public static int forward(int current_number) {
if (current_number < MAX_NUMBER) {
current_number++;
} else {
current_number = MAX_NUMBER;
}
return current_number;
public static int backward(int current_number) {
if (current_number > MIN_NUMBER) {
current_number--;
}
return current_number;
}
public static String createFileName(int current_number) {
return ("Picture " + current_number + ".jpg");
}
public static String createRandomName() {
return ("Picture " + (int) (Math.random() * 8 + 1) + ".jpg");
}
public static void showMenu() {
PictureViewer theobject = new PictureViewer();
int current_number = 0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("Choose static forward(1), static backward(2),"
+ " createFileName(3), createRandomName(4)");
int user = input.nextInt();
switch (user) {
case 1:
System.out.println("static forward");
current_number = forward(current_number);
theobject.forward();
break;
case 2:
System.out.println("static backward");
current_number = backward(current_number);
theobject.backward();
break;
case 3:
System.out.println("createFileName");
createFileName(current_number);
theobject.showWindow(createFileName(current_number));
break;
case 4:
System.out.println("createRandomName");
createRandomName();
theobject.showWindow(createRandomName());
}
if (image_number != 1);
System.out.println(image_number);
}
}
public void forward() {
if (image_number < MAX_NUMBER) {
image_number++;
} else {
image_number = MAX_NUMBER;
}
}
public void backward() {
if (image_number > MIN_NUMBER) {
image_number--;
}
}
public void showWindow(String filename) {
JFrame frame = new JFrame("GUI Window");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
我应该做的事情:
编写一个新函数来创建和显示一个GUI窗口(我通过执行showWindow方法来完成,但我不知道如何编写其余的代码)。
在你的switch语句中,你调用方法createFileName()和createRandomName(),添加对object.showWindow()的调用,并传递方法返回的文件名(我将object.showWindow()添加到那些特定方法但我得到错误)。测试你的程序,当达到MIN_NUMBER和MAX_NUMBER时,你应该能够以适当的行为前进和后退。显示窗口时,应在框架顶部显示正确的文件名。
感兴趣的领域:
下面
case 3:
System.out.println("createFileName");
createFileName(current_number);
theobject.showWindow();
break;
case 4:
System.out.println("createRandomName");
createRandomName();
theobject.showWindow();
在这里
public void showWindow(String filename) {
}
答案 0 :(得分:0)
首先,程序中的编译错误。我将您的代码复制并粘贴到我的IDE中,并在object.showWindow()
行中出现编译错误,它说:
类PictureViewer中的方法showWindow不能应用于给定的类型;
必需:字符串
发现:没有参数
原因:实际和正式的参数列表长度不同
对于Java初学者来说,这可能看起来很神秘,但它只是告诉你,你正在调用的方法,在这种情况下是showWindow()
方法,要求你传递一个String,但是你没有传递任何那个为什么它会抛出一个错误。另外,在你的问题中,你说
调用方法createFileName()和createRandomName(),添加对object.showWindow()的调用并传递方法返回的文件名
现在很清楚如何删除编译错误。您需要传递方法createFileName()
和createRandomName()
。这样做之后,它将如下所示:
case 3:
System.out.println("createFileName");
theobject.showWindow(createFileName(current_number));
break;
case 4:
System.out.println("createRandomName");
theobject.showWindow(createRandomName());
接下来是创建和显示GUI窗口。我将首先向您展示如何在伪代码中执行此操作,以便您自己学习如何执行此操作。
首先,添加一个我们将用于引用窗口的全局变量。然后,在showWindow()
方法中:
public void showWindow(String filename) {
if window is null
initialize new window
set the window title using filename
show window
else
set the window title using filename
}