Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单GUI | JButton,按下时,显示由另一个类的“方法|调试帮助”定义的字符串变量文本?_Java_User Interface_Jbutton - Fatal编程技术网

Java 简单GUI | JButton,按下时,显示由另一个类的“方法|调试帮助”定义的字符串变量文本?

Java 简单GUI | JButton,按下时,显示由另一个类的“方法|调试帮助”定义的字符串变量文本?,java,user-interface,jbutton,Java,User Interface,Jbutton,本质上,我创建了一个程序,旨在为用户提供一个包含一个按钮的界面。当按下按钮时,程序将根据一个简单的随机变量和一个开关大小写生成一个字符串,然后显示您绘制的+该字符串变量 除了MTGgui类中的方法showDialogMessage在调用时没有显示字符串cardName之外,所有功能都按预期运行,该字符串定义为其各自类中另一个名为card的私有变量。关于如何解决这个问题,有什么建议吗?试试这个: ****// -------------------------------- package Pra

本质上,我创建了一个程序,旨在为用户提供一个包含一个按钮的界面。当按下按钮时,程序将根据一个简单的随机变量和一个开关大小写生成一个字符串,然后显示您绘制的+该字符串变量

除了MTGgui类中的方法showDialogMessage在调用时没有显示字符串cardName之外,所有功能都按预期运行,该字符串定义为其各自类中另一个名为card的私有变量。关于如何解决这个问题,有什么建议吗?

试试这个:

****// --------------------------------
package Practice;
import java.util.Random;

public class Card
{
    Random gen = new Random();
    private Card[] Deck = new Card[60];
    private int i = 0;
    private int drawnCard;
    public static String cardName = "";

    // Constructor to return String variable "cardName",    
    // which is later used by the MTGgui class.
    public String Draw(String cardName)
    {   
        if (i < Deck.length)
        {
            drawnCard = gen.nextInt(5) + 0;

            switch (drawnCard)
            {
            case 0: cardName = "Instant";
            case 1: cardName = "Sorcery";
            case 2: cardName = "Creature";
            case 3: cardName = "Enchantment";
            case 4: cardName = "Land";
            case 5: cardName = "Artifact";
            default: cardName = "Nothing!";
            }

            Card.cardName = this.cardName;
        }
        return Card.cardName;
    }
}
// Card class.
//--------------------------------




// --------------------------------
package Practice;
import javax.swing.JFrame;

public class MTGInterface extends JFrame
{
    public static void main (String[] args)
    {
        MTGgui MTG = new MTGgui();
        MTG.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MTG.setSize(300, 200);
        MTG.setVisible(true);
    }
}

// Main class.
// --------------------------------




// --------------------------------------------------
package Practice;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
// Importing required assets.

public class MTGgui extends JFrame // Code to set up the user interface.
{
    // JButton variable that appears on-screen.
    private JButton DrawCard;

    // Constructor for this class.
    public MTGgui()
    {
        super("MTG Deck Drawing Simulator : Mega Awesome Edition!!!");

        setLayout(new FlowLayout());

        DrawCard = new JButton("Draw a card");
        add(DrawCard);

        // Building an event handler for actions caused by button.
        HandlerClass Handler = new HandlerClass();
        DrawCard.addActionListener(Handler);
    }

    // Private class within MTGgui for event handling.
    private class HandlerClass implements ActionListener
    {
        // Initializing private String variable that is the same 
        // as the "Card" class' variable - cardName.
        private String card = Card.cardName;

        public void actionPerformed(ActionEvent Event) 
        {
            JOptionPane.showMessageDialog(null, "You drew a(n)" + card);
        }

    }
}

// MTGgui class
//--------------------------------------------------****
公务舱卡 {

}


这个解决方案有很多静态/非静态变量/方法,这不是最好的编程方式,但它很有效。

为了吸引正确的注意:1我们都知道您在寻求帮助。写一个简短的标题,说明你的问题。把你的第一段放在代码前面。好的,我将在以后的帖子中遵循这些步骤。谢谢你的建议!我仍在学习更先进的技术,因此代码目前可以正常工作。非常感谢你!我很感激!我还意识到我在Card类中忽略了增加整数I。我的错误。
private class HandlerClass implements ActionListener
{
    // Initializing private String variable that is the same 
    // as the "Card" class' variable - cardName.
    //        private String card = Card.cardName;

    public void actionPerformed(ActionEvent Event) 
    {
        JOptionPane.showMessageDialog(null, "You drew a(n) " + Card.draw());
    }
}
private static Card[] Deck = new Card[60];

// Constructor to return String variable "cardName",    
// which is later used by the MTGgui class.
public static String draw()
{   
    Random gen = new Random();

    String returningCardName = "";

    int i = 0;
    // i will be always 0...
    if (i < Deck.length)
    {
        int drawnCard = gen.nextInt(5) + 0;

        switch (drawnCard)
        {
        case 0: returningCardName = "Instant"; break;
        case 1: returningCardName = "Sorcery"; break;
        case 2: returningCardName = "Creature"; break;
        case 3: returningCardName = "Enchantment"; break;
        case 4: returningCardName = "Land"; break;
        case 5: returningCardName = "Artifact"; break;
        default: returningCardName = "Nothing!"; break;
        }

    }
    return returningCardName;
}