我无法从Java服务器页面(jsp)中嵌入的applet或java web开始获取用户输入值。JSP中的用户交互
是否有任何其他方式提供用户交互性,而我可以获取用户输入值,以便我可以使用它来做一些计算和处理?
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class GUI extends JFrame implements MouseListener{
//JFrame myFrame = new JFrame();
JLabel myPanels[];
int counter = 0;
int temp = 0;
int correctPair =0 ;
ArrayList<String> answers = new ArrayList<String>();
public GUI(){
answers.add("2");
answers.add("7");
answers.add("9");
answers.add("10");
answers.add("11");
answers.add("14");
// super("Grid");
setLayout(new GridLayout(4,4));
addMouseListener(this);
myPanels = new JLabel[16];
for (int x = 0;x<myPanels.length;x++){
myPanels[x]=new JLabel("");
myPanels[x].setOpaque(true);
myPanels[x].setBackground(Color.white);
myPanels[x].setBorder(BorderFactory.createLineBorder(Color.black));
myPanels[x].addMouseListener(this); // <-- add same listener to each grid
}
myPanels[2].setText("A");
myPanels[14].setText("B");
for (int x = 0;x<myPanels.length;x++){
myPanels[x].setName(x+"");
}
List<Integer> rolls = Arrays.asList(0,1,4,5,8,9,12,13);
Collections.shuffle(rolls);
myPanels[rolls.get(0)].setBackground(Color.green);
myPanels[rolls.get(1)].setBackground(Color.green);
List<Integer> rolls_left = Arrays.asList(2,3,6,7,10,11,14,15);
Collections.shuffle(rolls);
myPanels[rolls_left.get(0)].setBackground(Color.green);
//Add all the squares (JLabels)
for (int x = 0;x<myPanels.length;x++)
add(myPanels[x]);
}
public static void main(String arg[]) {
GUI gui = new GUI();
gui.setSize(200,200);
gui.setResizable(false);
gui.setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
float[] dash1 = { 2f, 0f, 2f };
BasicStroke bs1 = new BasicStroke(1,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_ROUND,
1.0f,
dash1,
2f);
g2d.setStroke(bs1);
g2d.setColor(Color.red);
g2d.drawLine(101, 0,101 , 200);
}
@Override
public void mouseClicked(MouseEvent e) {
JLabel clickedPanel = (JLabel) e.getSource();
//Toggle colours
if (clickedPanel.getBackground()==Color.white)
{
counter++;
clickedPanel.setBackground(Color.red);
System.out.println("Box " + clickedPanel.getName() + " selected.");
System.out.println("Counter:" + counter);
}
else if (clickedPanel.getBackground()==Color.green)
{
}
else
{
counter--;
clickedPanel.setBackground(Color.white);
System.out.println("Box " + clickedPanel.getName() + " unselected.");
System.out.println("Counter:" + counter);
}
System.out.println(clickedPanel.getLocation());
System.out.println(clickedPanel.getName());
System.out.println(clickedPanel.getBackground());
for (int x = 0;x<myPanels.length;x++){
if(myPanels[x].getBackground().getBlue() == 0 && myPanels[x].getBackground().getGreen() == 0)
{
System.out.println("Box "+ myPanels[x].getName() + " selected for the answer.");
}
if(myPanels[x].getBackground().getBlue() == 0 && myPanels[x].getBackground().getGreen() == 255)
{
System.out.println("Box "+ myPanels[x].getName() + " is the initial question box coloured.");
}
}
for(int i=0; i< answers.size(); i++)
{
temp =i;
if(answers.get(i).equals("0") && answers.get(temp+1).equals("3"))
{
correctPair++;
}
else if (answers.get(i).equals("1") && answers.get(temp+1).equals("2"))
{
correctPair++;
}
else if (answers.get(i).equals("4") && answers.get(temp+1).equals("7"))
{
correctPair++;
}
else if (answers.get(i).equals("5") && answers.get(temp+1).equals("6"))
{
correctPair++;
}
else if (answers.get(i).equals("8") && answers.get(temp+1).equals("11"))
{
correctPair++;
}
else if (answers.get(i).equals("9") && answers.get(temp+1).equals("10"))
{
correctPair++;
}
else if (answers.get(i).equals("12") && answers.get(temp+1).equals("15"))
{
correctPair++;
}
else if (answers.get(i).equals("13") && answers.get(temp+1).equals("14"))
{
correctPair++;
}
else
{
}
}
System.out.println("pairs: " + correctPair);
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
以上就是我的JFrame代码,我可以得到用户的鼠标单击在他们点击任何输入框。
我想嵌入到jsp中,所以我发现可以使用Java Web Start或applet完成嵌入。但我不能得到用户输入来做一些逻辑处理。
那么是否有其他方式来嵌入和获取输入值,因为我目前正在JSP中执行一个项目。
感谢您的回复。但我现在拥有的是摆动组件,用户将需要使用鼠标事件点击来选择他们的选择。所以我现在有一个JFrame。我可以将它转换为小程序,但我无法获得用户选择并以jsp计算结果。 – gonggong
@gonggong请编辑你的问题一下,并将你在这里提出的评论添加到问题中。这可以帮助你找到你的答案,并且仍然可以保持演示或JSP以外的计算。在普通的java类中执行该计算,并从JSP中调用Java类以使计算的数据显示在视图/ JSP中。如果可能的话,那么代码也是如此。 Stackoverflow规范也要求你清楚你的问题。 –
和另一个信息。 Swing应用现在已经死了。 Javafx是一个更好,更简单的框架来完成事件处理的任务。你不需要在这里为你的UI组件编写正确的代码,并且GUI的代码在fxml文件中与java分离。 –