显示GUI窗口的方法

时间:2015-10-22 00:50:56

标签: java

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) {

}

1 个答案:

答案 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
}