- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试让停止按钮在用户单击开始时提供数字的运行总数。停止按钮不会给出总数,也不会保存您单击它时开始给出的数字。
我在这里做错了什么?
package com.egroegnosbig.dicerollergui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Fishing {
public static void main(String[] args) {
//create Jframe
JFrame Frame = new JFrame("Fishing Game");
JPanel panel = new JPanel(new BorderLayout());
panel.setPreferredSize(new Dimension(600,600));
//two panels in main panel
JPanel panelup = new JPanel();
JPanel paneldown = new JPanel();
panelup.setBackground(Color.white);
//title image with word overlay
ImageIcon pole1 = new ImageIcon("fishingpole.png");
JLabel title = new JLabel(pole1);
title.setBounds(150, 0,325,175);
title.setText("Go Fishing?");
title.setFont(new Font("Ravie", Font.BOLD, 30));
title.setForeground(Color.green);
title.setHorizontalTextPosition(JLabel.CENTER);
title.setVerticalTextPosition(JLabel.CENTER);
title.setOpaque(false);
panelup.add(title);
panelup.setPreferredSize(new Dimension(600,375));
panelup.setLayout(null);
JLabel points = new JLabel("<html>Look what you caught!<br>(click start to keep going)</html> " );
points.setForeground(Color.blue);
points.setFont(new Font(null, Font.BOLD, 20));
points.setBounds(10,150, 450, 100);
panelup.add(points);
JTextField caught = new JTextField(20);
caught.setSize(10,10);
caught.setFont(new Font("Times New Roman", Font.BOLD, 15));
caught.setForeground(Color.RED);
caught.setBounds(10,230,350,30);
panelup.add(caught);
JTextField total = new JTextField(20);
total.setSize(10,10);
total.setFont(new Font("Times New Roman", Font.BOLD, 15));
total.setForeground(Color.RED);
total.setBounds(325,315,150,30);
panelup.add(total);
** This is the stop button**
JLabel End = new JLabel("<html>All Done?! Press Stop and Let's<br>see how well you did!<html>" );
End.setForeground(Color.blue);
End.setFont(new Font(null, Font.BOLD, 20));
End.setBounds(10, 310, 325, 50);
panelup.add(End);
JTextField single = new JTextField(20);
single.setSize(10,10);
single.setFont(new Font("Times New Roman", Font.BOLD, 15));
single.setForeground(Color.RED);
single.setBounds(10,275,100,30);
panelup.add(single);
//Label for asking user to continue
ImageIcon bobber = new ImageIcon("bobber2.jpg");
JButton start = new JButton(bobber);
start.setBorderPainted(false);
start.setBounds(350, 170,100,100);
start.setText("Start!");
start.setFont(new Font("Serif", Font.BOLD, 20));
start.setForeground(Color.black);
start.setHorizontalTextPosition(JLabel.CENTER);
start.setVerticalTextPosition(JLabel.CENTER);
start.setOpaque(false);
panelup.add(start);
ImageIcon bobber2 = new ImageIcon("bobber2.jpg");
JButton stop= new JButton(bobber2);
stop.setBorderPainted(false);
stop.setBounds(450, 170,100,100);
stop.setText("Stop!");
stop.setFont(new Font("Serif", Font.BOLD, 25));
stop.setForeground(Color.black);
stop.setHorizontalTextPosition(JLabel.CENTER);
stop.setVerticalTextPosition(JLabel.CENTER);
stop.setOpaque(false);
panelup.add(stop);
start.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
double input = 0;
int count = 0 ;
int points2 = 0;
int die;
die = (int)(Math.random()*6) + 1;
if (die == 1)
{
caught.setText("Winner winner fish fry dinner! Catfish ");
points2 = 10;
}
if (die == 2)
{
caught.setText("Nemo! Go straight to Jail. ");
points2 = 15;
}
if (die == 3)
{
caught.setText("Stinky shoe boohoo! ");
points2 = 5;
}
if (die == 4)
{
caught.setText("Whale of a fish, BIG TUNA ");
points2 = 30;
}
if (die == 5)
{
caught.setText("Yumm Yumm Bass Pro");
points2 = 25;
}
if (die == 6)
{
caught.setText("Is that a toilet bowl seat!? ");
points2 = 10;
}
count += points2;
single.setText(points2 + "");
{
}
}
}
);
stop.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int total2 = 0;
int totalpoints =0;
totalpoints += total2;
total2 = Integer.parseInt(single.getText());
totalpoints += total2;
total.setText(""+ totalpoints);
}
}
);
//paneldown image
ImageIcon water = new ImageIcon("water.jpg");
JLabel pic = new JLabel(water);
paneldown.add(pic, BorderLayout.SOUTH);
//panel positioning
panel.add(panelup, BorderLayout.NORTH);
panel.add(paneldown, BorderLayout.SOUTH);
//set frame with panel
Frame.add(panel);
Frame.pack();
Frame.setLocationRelativeTo(null);
Frame.setSize(600,600);
Frame.setVisible(true);
}
}
最佳答案
这是一个变量范围的问题。通过简单地将变量移动到范围更可见的地方,就可以通过更多方法访问它们(简单地说)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Fishing {
public static void main(String[] args) {
// This is where the variables got moved to
final int[] total2 = {
0
};
final int[] totalpoints = {
0
};
//create Jframe
JFrame Frame = new JFrame("Fishing Game");
Frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
panel.setPreferredSize(new Dimension(600, 600));
//two panels in main panel
JPanel panelup = new JPanel();
JPanel paneldown = new JPanel();
panelup.setBackground(Color.white);
//title image with word overlay
ImageIcon pole1 = new ImageIcon("fishingpole.png");
JLabel title = new JLabel(pole1);
title.setBounds(150, 0, 325, 175);
title.setText("Go Fishing?");
title.setFont(new Font("Ravie", Font.BOLD, 30));
title.setForeground(Color.green);
title.setHorizontalTextPosition(JLabel.CENTER);
title.setVerticalTextPosition(JLabel.CENTER);
title.setOpaque(false);
panelup.add(title);
panelup.setPreferredSize(new Dimension(600, 375));
panelup.setLayout(null);
JLabel points = new JLabel("<html>Look what you caught!<br>(click start to keep going)</html> ");
points.setForeground(Color.blue);
points.setFont(new Font(null, Font.BOLD, 20));
points.setBounds(10, 150, 450, 100);
panelup.add(points);
JTextField caught = new JTextField(20);
caught.setSize(10, 10);
caught.setFont(new Font("Times New Roman", Font.BOLD, 15));
caught.setForeground(Color.RED);
caught.setBounds(10, 230, 350, 30);
panelup.add(caught);
JTextField total = new JTextField(20);
total.setSize(10, 10);
total.setFont(new Font("Times New Roman", Font.BOLD, 15));
total.setForeground(Color.RED);
total.setBounds(325, 315, 150, 30);
panelup.add(total);
// STOP BUTTON
JLabel End = new JLabel("<html>All Done?! Press Stop and Let's<br>see how well you did!<html>");
End.setForeground(Color.blue);
End.setFont(new Font(null, Font.BOLD, 20));
End.setBounds(10, 310, 325, 50);
panelup.add(End);
JTextField single = new JTextField(20);
single.setSize(10, 10);
single.setFont(new Font("Times New Roman", Font.BOLD, 15));
single.setForeground(Color.RED);
single.setBounds(10, 275, 100, 30);
panelup.add(single);
//Label for asking user to continue
ImageIcon bobber = new ImageIcon("bobber2.jpg");
JButton start = new JButton(bobber);
start.setBorderPainted(false);
start.setBounds(350, 170, 100, 100);
start.setText("Start!");
start.setFont(new Font("Serif", Font.BOLD, 20));
start.setForeground(Color.black);
start.setHorizontalTextPosition(JLabel.CENTER);
start.setVerticalTextPosition(JLabel.CENTER);
start.setOpaque(false);
panelup.add(start);
ImageIcon bobber2 = new ImageIcon("bobber2.jpg");
JButton stop = new JButton(bobber2);
stop.setBorderPainted(false);
stop.setBounds(450, 170, 100, 100);
stop.setText("Stop!");
stop.setFont(new Font("Serif", Font.BOLD, 25));
stop.setForeground(Color.black);
stop.setHorizontalTextPosition(JLabel.CENTER);
stop.setVerticalTextPosition(JLabel.CENTER);
stop.setOpaque(false);
panelup.add(stop);
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double input = 0;
int count = 0;
int points2 = 0;
int die;
die = (int) (Math.random() * 6) + 1;
if (die == 1) {
caught.setText("Winner winner fish fry dinner! Catfish ");
points2 = 10;
}
if (die == 2) {
caught.setText("Nemo! Go straight to Jail. ");
points2 = 15;
}
if (die == 3) {
caught.setText("Stinky shoe boohoo! ");
points2 = 5;
}
if (die == 4) {
caught.setText("Whale of a fish, BIG TUNA ");
points2 = 30;
}
if (die == 5) {
caught.setText("Yumm Yumm Bass Pro");
points2 = 25;
}
if (die == 6) {
caught.setText("Is that a toilet bowl seat!? ");
points2 = 10;
}
count += points2;
single.setText(points2 + "");
totalpoints[0] += points2;
}
});
stop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
total2[0] = Integer.parseInt(single.getText());
} catch (NumberFormatException ee) {
// If there is a blank input from single.getText();, then make total2 zero to avoid larger errors
total2[0] = 0; // Another way to handle the exception
}
total.setText("" + totalpoints[0]);
}
});
//paneldown image
ImageIcon water = new ImageIcon("water.jpg");
JLabel pic = new JLabel(water);
paneldown.add(pic, BorderLayout.SOUTH);
//panel positioning
panel.add(panelup, BorderLayout.NORTH);
panel.add(paneldown, BorderLayout.SOUTH);
//set frame with panel
Frame.add(panel);
Frame.pack();
Frame.setLocationRelativeTo(null);
Frame.setSize(600, 600);
Frame.setVisible(true);
}
}
我将变量转换为数组的原因是因为这些变量是从内部类访问的,它们需要声明为final或有效的final。阅读这篇文章的更多内容(here)
顺便说一句,(恕我直言)你最初的代码格式非常糟糕。如果您要发布大量代码,请注意您以外的人必须阅读它,因为即使是我的 IDE 的自动格式化程序也无法解决此问题。
编辑:更新了代码以包含额外的语句以添加功能。编辑2:更新代码以更好的方式处理异常
关于java - 停止按钮无法运行 "total",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041433/
所以我有这个 javascript 片段,它有两个按钮可以进入全屏,一个按钮可以退出全屏。我想做到这一点,如果我不在全屏模式下,按钮会显示转到全屏模式,而当我处于全屏模式时,按钮会显示退出全屏模式..
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我尝试将 Twitter 上的“Tweet Me”按钮 ( http://twitter.com/goodies/tweetbutton ) 添加到我的网站。然而,每当按下按钮时,我都会收到此 Jav
我试图在我的文本区域中获取一个按钮值,如果我使用 则工作正常但如果我使用那么它就不起作用了。你能找出问题所在吗? HTML 1 2 3 4 JavaScript $(document).read
我的 C# Winform 面板中有一堆文本框。每行文本框的命名如下: tb1 tbNickName1 comboBox1 tb2 tbNickName2 comboBox2 tb3 tbNickNa
我有一个表单,其中过滤器下方有按钮(应用过滤器和清除过滤器),我试图在单击“应用”按钮时显示“清除”,并在单击“清除”按钮时隐藏“清除”按钮。 下面的代码(如果我的表有的话):
excel 按钮正在工作,但是当我添加 pdf 按钮时,它添加仅显示 pdf 按钮 excel 按钮在 pdf 按钮添加后隐藏 $(document).ready(function() { $
我想创建一个 div 作为标题并分成 3 列,并按以下顺序在其中放置 2 个按钮和一个标题:Button1(左位) Title(居中) Button2(右位) 这是我为这个 div 编写的代码:
仅当选中所有框时才应禁用“允许”按钮。我该怎么做?我已经完成了 HTML 部分,如下所示。如何执行其中的逻辑部分?即使未选中一个复选框,也应禁用“允许”按钮
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如您所知,您可以使用 2 种方法在 HTML5 中呈现按钮: 使用 void 元素 或 如果您需要内容,请使用 元素(不是空元素)。 在JSF2中,有2种方式生成按钮;与UICommand或 UIOu
我尝试根据表单元素的更改禁用/启用保存按钮。但是,当通过弹出按钮选择更改隐藏输入字段值时,保存按钮不受影响。 下面是我的代码。我正在尝试序列化旧的表单值并与更改后的表单值进行比较。但我猜隐藏的字段值无
我有用于在消息(电子邮件、短信)上输入内容的 EditText。我希望在单击 ActionDone 按钮时立即发布消息。我为此使用以下代码: message.setOnEditorActionList
我的 Android 应用程序中有一堆 EditText,每个都将 InputMethod 设置为 numberSigned。我的目标设备没有硬件键盘,而是使用软件键盘输入数字。 Android 将输
我无法以编程方式隐藏弧形菜单中的 fab 按钮。我正在使用https://github.com/saurabharora90/MaterialArcMenu在我的代码中。如何在Java中以编程方式隐藏
我已经看到这在其他类型的对话框窗口中是可能的,例如“showConfirmDialog”,其中可以指定按钮的数量及其名称;但是使用“showInputDialog”时是否可以实现相同的功能?我似乎无法
相同的按钮用于激活和停用。第一次,当代码运行按钮单击并成功“停用”时。但第二次,代码无法找到该元素。第一个案例按钮位于第二个“a”标签中,然后停用第一个“a”标签中的按钮。 案例1: Edit
是否可以将按钮的 onclick 操作设置为 JavaScript 变量?这个想法是我们用 JavaScript 控制一个表。每当点击该表的一行时,我们就会更新一个 JavaScript 变量。该 v
我想创建一个按钮,它包含左侧的文本和右侧的复选框(或任何其他组件)。我怎样才能做到这一点? 我发现我可以制作自己的 View extends Button,但是如果可以的话我应该如何实现 onDraw
我是一名优秀的程序员,十分优秀!