【发布时间】:2018-10-05 23:11:03
【问题描述】:
我正在制作一款日本约会游戏风格的约会游戏,其中包含图片和回复,以供娱乐和练习。我试图为网格布局中的每个按钮显示一个JOptionPane 消息对话框,作为对每个选项的响应。这样,它就像一棵逻辑树。我不习惯使用动作监听器,因为我有点初学者。这是我的代码。我只是不习惯这样做的语法。
谁能帮帮我?
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.*;
//Implementations of packages
public class NestedPanels extends JPanel {
private static final String[] BTN_TEXTS = { "Say Hello", "Say You Look Good", "Say Sorry I'm Late" }; //three buttons
private static final int TITLE_POINTS = 3; //number of objects in text box
public NestedPanels() { //implemeted class
JPanel southBtnPanel = new JPanel(new GridLayout(3, 2, 1, 1)); //grid layout of buttons and declaration of panel SoutbtnPanel
for (String btnText : BTN_TEXTS) { //BTN TEXT button titles linked to string btnText label
southBtnPanel.add(new JButton(btnText)); //add btnText label
}
setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); //layout of buttons "Button text"
setLayout(new BorderLayout());
add(Box.createRigidArea(new Dimension(600, 600))); //space size of text box webapp over all
add(southBtnPanel, BorderLayout.SOUTH);
}
private static void createAndShowGui() {//class to show gui
NestedPanels mainPanel = new NestedPanels(); //mainPanel new class of buttons instantiation
JFrame frame = new JFrame("Date Sim 1.0");//title of webapp on top
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setVisible(true);
ImageIcon icon = new ImageIcon("C:/Users/wchri/Pictures/10346538_10203007241845278_2763831867139494749_n.jpg");
JLabel label = new JLabel(icon);
mainPanel.add(label);
frame.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
System.out.println("Welcome to Date Sim 1.0 with we1. Are you ready to play? Yes/No?");
Scanner in = new Scanner(System.in);
String confirm = in.nextLine();
if (confirm.equalsIgnoreCase("Yes")) {
System.out.println("Ok hot stuff... Let's start.");
NestedPanels mainPanel = new NestedPanels();
} else {
System.out.println("Maybe some other time!");
return;
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
【问题讨论】:
-
我不明白你想要达到什么目的。但是,JOptionPane 是一个临时对话框,它显示(通常带有一条消息),从用户那里获取一些数据,然后关闭。所以你不应该在 GUI 上使用扫描仪。而是使用 JOptionPane 为用户显示消息。阅读How to Make Dialogs 上的 Swing 教程以获取更多信息和示例。本教程还有一个关于如何编写 ActionListener 的部分。
-
Swing 教程介绍了这三种编写动作监听器的方法: 要编写动作监听器,请按照以下步骤操作: 声明一个事件处理程序类并指定该类要么实现一个 ActionListener 接口,要么扩展一个实现 ActionListener 接口的类。例如: public class MyClass implements ActionListener { 但是我已经实例化了一个扩展jpanel的父类?有什么帮助吗?扫描仪只是利用我所知道的风格和品味
标签: java swing jbutton actionlistener joptionpane