我正在为今年夏天开始的合作工作安排工作。我创建了一个名为Slots.java的基本java GUI,它是一个基本的老虎机。我希望能够因为缺乏一个更好的术语而在网站上存储整个应用程序,以便它对我的计算机没有任何依赖性。如果我要从我的计算机上删除这个应用程序和代码,它应该仍然可以从网站上运行得很好。在将来,我还希望记录每次游戏的日期以及它是否会导致存储在数据库中的胜利,因此服务器通信将成为它的一个重要方面。我还需要考虑应用程序使用图像文件,以及如何存储它们。我研究了JSP以及将应用程序转换为applet的选项,但这些似乎仍然依赖于我的计算机上托管的应用程序。这是一个冗长的问题,但我迷失了,因为我的背景主要是在学校的Java应用程序开发中。任何帮助将不胜感激!以下是我的java代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Slots extends JFrame
implements ActionListener
{
private JLabel message;
private JButton spin;
private JButton newGame;
private JCheckBox hold1;
private JCheckBox hold2;
private JCheckBox hold3;
private JPanel topPanel;
private JLabel imageLabel1;
private JLabel imageLabel2;
private JLabel imageLabel3;
private JPanel buttonsPanel;
private JPanel messagePanel;
private ImageIcon club;
private ImageIcon spade;
private ImageIcon diamond;
private ImageIcon heart;
private Random generator;
private boolean checked1;
private boolean checked2;
private boolean checked3;
private int spinCounter;
private int spinsLeft;
private int cfollow;
private int sfollow;
private int dfollow;
private int hfollow;
private int total;
private int num1;
private int num2;
private int num3;
//********************Constructor********************
public Slots()
{
message = new JLabel("Click Spin to begin");
spin = new JButton("Spin");
newGame = new JButton("New Game");
hold1 = new JCheckBox("Hold");
hold2 = new JCheckBox("Hold");
hold3 = new JCheckBox("Hold");
topPanel = new JPanel();
imageLabel1 = new JLabel();
imageLabel2 = new JLabel();
imageLabel3 = new JLabel();
buttonsPanel = new JPanel();
messagePanel = new JPanel();
club = new ImageIcon("Club.png");
spade = new ImageIcon("Spade.png");
diamond = new ImageIcon("Diamond.png");
heart = new ImageIcon("Heart.png");
generator = new Random();
checked1 = false;
checked2 = false;
checked3 = false;
spinCounter = 0;
spinsLeft = 3;
cfollow = 5;
sfollow = 50;
dfollow = 500;
hfollow = 5000;
total = 0;
num1 = 0;
num2 = 0;
num3 = 0;
this.setTitle("");
Container pane = this.getContentPane();
pane.setLayout(new BorderLayout());
topPanel.add(imageLabel1);
topPanel.add(imageLabel2);
topPanel.add(imageLabel3);
topPanel.add(hold1);
topPanel.add(hold2);
topPanel.add(hold3);
pane.add(topPanel, "North");
buttonsPanel.add(spin);
buttonsPanel.add(newGame);
pane.add(buttonsPanel, "Center");
messagePanel.add(message);
pane.add(messagePanel, "South");
spin.addActionListener(this);
newGame.addActionListener(this);
this.setSlots();
}
//********************setSlots()*********************
public void setSlots()
{
int num = 0;
int rand1 = generator.nextInt(4);
int rand2 = generator.nextInt(4);
int rand3 = generator.nextInt(4);
if(getSelected1() == false){
if(rand1 == 0)
{
imageLabel1.setIcon(club);
num1 = 5;
}
else if(rand1 == 1)
{
imageLabel1.setIcon(spade);
num1 = 50;
}
else if(rand1 == 2)
{
imageLabel1.setIcon(diamond);
num1 = 500;
}
else
{
imageLabel1.setIcon(heart);
num1 = 5000;
}
}
if(getSelected2() == false){
if(rand2 == 0)
{
imageLabel2.setIcon(club);
num2 = 5;
}
else if(rand2 == 1)
{
imageLabel2.setIcon(spade);
num2 = 50;
}
else if(rand2 == 2)
{
imageLabel2.setIcon(diamond);
num2 = 500;
}
else
{
imageLabel2.setIcon(heart);
num2 = 5000;
}
}
if(getSelected3() == false){
if(rand3 == 0)
{
imageLabel3.setIcon(club);
num3 = 5;
}
else if(rand3 == 1)
{
imageLabel3.setIcon(spade);
num3 = 50;
}
else if(rand3 == 2)
{
imageLabel3.setIcon(diamond);
num3 = 500;
}
else
{
imageLabel3.setIcon(heart);
num3 = 5000;
}
}
}
//********************getSelected1()********************
public boolean getSelected1()
{
if(hold1.isSelected())
{
checked1 = true;
}
else
{
checked1 = false;
}
return checked1;
}
//********************getSelected2()********************
public boolean getSelected2()
{
if(hold2.isSelected())
{
checked2 = true;
}
else
{
checked2 = false;
}
return checked2;
}
//********************getSelected3()********************
public boolean getSelected3()
{
if(hold3.isSelected())
{
checked3 = true;
}
else
{
checked3 = false;
}
return checked3;
}
//********************pressNewGame()********************
public void pressNewGame()
{
checked1 = false;
checked2 = false;
checked3 = false;
spinCounter = 0;
spinsLeft = 3;
this.setSlots();
message.setText("Click Spin to begin");
total = 0;
num1 = 0;
num2 = 0;
num3 = 0;
while(total == 15 || total == 150 || total == 1500 || total == 15000)
{
this.setSlots();
}
}
//********************end()********************
public void end()
{
int uselessInt = 1;
}
//********************isWin()********************
public String isWin()
{
String gameOver = "Game Over";
String winner = "We have a winner!";
if(total == 15 || total == 150 || total == 1500 || total == 15000)
{
return winner;
}
else
return gameOver;
}
//********************actionPerformed(ActionEvent e)********************
public void actionPerformed (ActionEvent e)
{
Object source = e.getSource();
if(source == newGame)
{
this.pressNewGame();
}
else if(source == spin)
{
while(spinCounter >= 0)
{
this.setSlots();
spinCounter++;
spinsLeft = spinsLeft - 1;
break;
}
if(spinCounter <= 2)
{
message.setText("Spins left: " + spinsLeft + " Score: " + total);
}
else
{
message.setText(this.isWin());
}
}
else
{
this.end();
}
}
//********************main(String[] args)********************
public static void main(String[] args)
{
Slots frame = new Slots();
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 0 :(得分:0)
这里的答案比你从SO中获得的要复杂得多。您需要研究像Apache Tomcat这样的servlet容器。
基本上,您需要一个Web服务器来运行您的代码。
由于这是一个AWT应用程序,表示它的唯一方法是将其转换为applet。这将保存在某个托管网站上并嵌入到HTML文档中。
答案 1 :(得分:0)
运行从Web服务器传递到用户计算机的Java代码有两种选择:Java Applet和Java Web Start。
在这两种情况下,下载的Java代码都在用户计算机上本地执行。因此,这两种技术都需要用户的本地计算机安装Java实现(JVM)。
Java Applet technology通过Web浏览器向用户提供可执行的Java应用程序。然后,小程序使用Swing / AWT或JavaFX在user-interface内显示web browser。由于包括安全问题在内的各种因素,这种方法已脱离主流使用。
Java Web Start technology使Java应用程序可以下载到用户的计算机,然后作为独立应用程序在本地执行。 “独立”表示应用程序运行时不需要Web浏览器。同样,Java Swing / AWT / JavaFX可用于呈现用户界面。
JWS是作为Java Applet的替代品而开发的,用于解决包括安全性在内的一些问题。 JWS仍然是一个可行的选择。
更常见的是Web Application(或网络应用)。基本思想是业务逻辑和数据存储在服务器上执行,而用户界面仅使用常见的Web技术通过Web浏览器远程呈现。
Java Servlet技术通常用于“后端”(服务器端),以处理来自/到Web浏览器的传入请求和传出响应。 JavaServer Pages (JSP)是在Servlet技术之上分层的许多可用框架之一。
Java Servlet应用程序在实现Servlet containers的许多Servlet spec中执行。热门示例包括Tomcat by Apache,Jetty by Eclipse,Glassfish by Oracle,WildFly by Red Hat等等。
大多数帮助您构建网络应用的框架都可以直接使用以下网络技术:HTTP,HTML,CSS,DOM,JavaScript, AJAX,Web Components,JSON,XML。你有很多框架可供选择,我在这里没有列出。许多是用Java编写的,许多用其他语言编写。
我知道一种不同类型的框架,它使用纯Java构建Web应用程序,同时掩盖了Web技术的字母表:Vaadin。
您使用Java完成所有编程,然后Vaadin生成所需的HTML / CSS / JavaScript以在浏览器中呈现用户界面。当您使用单击按钮并输入数据时,将通知服务器端Java应用程序。用Java编写的业务逻辑代码可以响应,改变用户界面中表示的数据,Vaadin在Web浏览器中更新用户界面的显示。
我知道另外一种类似的技术,可以在屏蔽所有这些网络技术的同时编写和运行网络应用服务器端:Xojo,网络版。您可以部署到自己的服务器或Xojo Cloud server。 Xojo使用自己的编程语言而不是Java,但在概念上与Vaadin非常相似。