- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个“按钮”,它只是 ACM Graphics Library 中的一个 GRect
。它有一个继承的方法addMouseListener
,我已经尝试过使用它(但失败了)。我需要知道语法,以便当有人单击“按钮”时我可以调用驻留在同一类中的另一个方法。
我想知道:
ButtonName.addMouseListener
还是addMouseListener(ButtonName)
我的截断代码:
import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Shooter extends GraphicsProgram
{
…
public GRect newShotB;
…
public void run()
{
test = new GLabel("start",printx+75,100);
add(test);
setup();
test.setLabel("runing");
fire();
test.setLabel("Waiting");
newShotB.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent arg0) {
test.setLabel("clicked");
fire();
}
});
}
}
我的完整代码:
import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Write a description of class Shooter here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Shooter extends GraphicsProgram
{
// instance variables - replace the example below with your own
private static final int width = 400; // Width of Canvas
private static final int height = 600; // Height of canvas
private static final int BALL_Radius = 30; // radius of the Ball
public int startxpos = 10; // starting xpos
public int startypos = 400; // starting ypos
public double xpos = startxpos; // x position of gp
public double ypos = startypos; // y postion of gp
public double t; // Time (for equations)
public int score; // Score Aquired
public int force; // Magnitude of Velocity
public double angleR; // Angle in Radianss
public double angleD; // Angle in Degrees
public GLabel anglePrint; // Print out of angle
public GLabel xposPrint; // Print out of x pos
public GLabel yposPrint; // Print out of y pos
public GLabel scorePrint; // Print out of score
public GLabel timePrint; // Print out of t
public GLabel nSBPrint;
public GLabel test;
public GOval gp; // The game Piece
public GLine ground; // The Line that is the ground
public GRect newShotB; // New Shot Button
public GRect trusShotB; // New TrusShot Button
public int printx = 25; // X Position of Glabels
public int printy = 25; // Y position of Glabels
/*
public static void main(String[] ags)
{
String[] sizeArgs = { "width=" + WIDTH, "height= " +HEIGHT};
new Shooter().start(sizeArgs);
}
*/
/**
* Constructor for objects of class Shooter
*/
public Shooter()
{
}
public void run()
{
test = new GLabel("start",printx+75,100);
add(test);
setup();
test.setLabel("runing");
fire();
test.setLabel("Waiting");
newShotB.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent arg0) {
test.setLabel("clicked");
fire();
}
});
}
public void setup()
{
timePrint = new GLabel ("Time: "+String.valueOf(t),printx, printy);
add(timePrint);
anglePrint = new GLabel("Angle: "+String.valueOf(angleD), printx, printy+10);
add(anglePrint);
xposPrint = new GLabel ("x-pos: "+String.valueOf(xpos), printx, printy+20);
add(xposPrint);
yposPrint = new GLabel ("y-pos: "+String.valueOf(ypos), printx, printy+30);
add(yposPrint);
scorePrint = new GLabel("Score: "+String.valueOf(score), printx, printy+40);
add(scorePrint);
ground = new GLine(10,startypos + BALL_Radius, 300, startypos + BALL_Radius);
add(ground);
GRect newShotB = new GRect (printx, 100, 50, 20);
newShotB.setFilled(true);
newShotB.setColor(Color.green);
add(newShotB);
nSBPrint = new GLabel ("New Shot",printx ,100);
add(nSBPrint);
gp = new GOval(startxpos,startypos,BALL_Radius, BALL_Radius);
gp.setFilled(true);
gp.setVisible(true);
gp.setColor(Color.blue);
add(gp);
//trusShotB = new GRect (printx, 150, 50, 20);
//trusShotB.setFilled(true);
//trusShotB.setColor(Color.green);
//add(trusShotB);
test.setLabel("endStart");
}
public void setpar()
{
}
public void fire()
{
test.setLabel("Firing");
ypos = startypos;
xpos = startxpos;
double vx;// = 10;
double vy;// = 50;
angleD = 45;
force =50;
angleR = Math.toRadians(angleD);
vx = (Math.cos(angleR)*force);
vy = (Math.sin(angleR)*force);
t = 0;
while (ypos<=startypos)
{
xpos=startxpos+vx*t;
ypos=startypos-(vy*t+.5*(-9.8)*t*t);
gp.setLocation(xpos,ypos);
waitTime();
timePrint.setLabel(String.valueOf(t));
}
test.setLabel("fired");
gp.setVisible(false);
}
public void trusShot()
{
int sl= 20; //sidelength of the Truss
int h = 100;// hight of truss
int d = 200; //distance of truss from edgee
GRoundRect t = new GRoundRect(sl, sl, h, d);
t.setColor(Color.gray);
}
public void waitTime()
{
int waitTime = 100;
try
{
Thread.sleep(waitTime);
}
catch(Exception e)
{
//ignoring
}
t = t+(waitTime/1000.0);
}
public void changeColor()
{
if(gp.getColor() == Color.red){
gp.setColor(Color.blue);}
else if (gp.getColor() == Color.blue)
{
gp.setColor(Color.red);
}
}
public void raiseAngle()
{
angleD = angleD +1;
}
public void lowerAngle()
{
angleD = angleD -1;
}
}
最佳答案
根据addMouseListener()的文档您将 MouseListener
的实现添加到 GObject
,特别是 GRect
。下面是添加匿名监听器的示例:
rect.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@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
}
});
您还可以使用已经实现了MouseListener
所有方法的MouseAdapter
,即:
rect.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
或者非匿名案例:
class CustomListener extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
CustomListener listener = new CustomListener();
rect.addMouseListener(listener);
这是一个简单的演示程序,单击时更改 GRect 的颜色:
import acm.program.*;
import acm.util.RandomGenerator;
import acm.graphics.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class TestRect extends GraphicsProgram {
private static RandomGenerator rand = new RandomGenerator();
public void run() {
final GRect rect = new GRect(10, 10, 100, 100);
rect.setFilled(true);
rect.setColor(Color.RED);
add(rect);
rect.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
rect.setColor(rand.nextColor());
}
});
}
}
关于java - 使用 acm.graphics 时 mouseListener 的语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264915/
我想知道如何在 OCaml 中设置文本大小。我尝试了 Graphics.set_text_size,我猜这应该可以解决问题。 但是无论我输入 set_text_size 200 还是 set_text
我想使用mathematica 为我正在写的书绘制图表。我想在mathematica中画一个图,将其保存为图片,然后将其导入到quarkxpress中,最后将其导出为pdf。 我的问题是最好使用哪种格
在顶层加载 Graphics 模块时,我收到一条错误消息“找不到 graphics.cma”。 我使用的是 OS X,而且我很确定我已经正确安装了 OCaml,因为我已经使用了大约一个月了。所以看起来
我知道 DDS 文件的存在,允许在 as/400 上对显示图形进行编程,但是还有其他方法吗? 具体来说,我想要做的是直接操作终端缓冲区,以便能够显示除文本之外的任何其他内容。例如,终端如下所示: 假设
Graphics.Save 与 Graphics.BeginContainer 有何不同? 最佳答案 看看here : The documentation does not differentiate
由于 Gdiplus::Graphics::DrawGraphics(Graphics*, x, y) 不存在,执行此类操作的最佳方法是什么? 例如,创建一个 Graphics 对象,使用各种 Dra
你能看出这有什么问题吗: (define (box d x1 y1 x2 y2) ( (graphics-draw-line d x1 y
我想编写一个 2D 游戏引擎。我遇到的问题(我不使用opengl之类的东西,所以我用cpu渲染)是,我通过graphics.drawImage()只得到7fps;您有任何加快速度的建议或其他替代方案吗
我在某些代码中发现了渲染错误,并找到了解决方法,但我想知道为什么我会得到不同的行为。在旧代码中,背景(有时)会呈现为白色,尽管在调试时 getBackground() 会返回正确的颜色。 旧代码: @
有谁知道是否有办法(也许通过外部API)将图形绘图/转换为多个图形?这个想法是同时保存 PNG 和 PDF(使用 Java IText 库)。 最佳答案 您可以将 Graphics 对象写入(java
我试图了解如何在英特尔芯片组上以 x86 保护模式绘制简单图形。我已经(有点)知道如何使用 VGA 接口(interface)来做到这一点,并且我正在尝试了解如何使用 G35 Express 来做到这
在我的应用程序中,我生成了一个条形码图像,该图像是根据用户使用 OpenFileDialog 上传的文件中的数据生成的。我的目标是允许用户在屏幕上查看条形码数据和图像本身,打印并使他们能够将两者保存为
我是 Java 新手,我只是想得到一些简单的东西,可能类似于 Zelle's graphics对于Python。 最佳答案 Java 类 Graphics和 Graphics2D应该包含 Zelle
如何将 FMX.Graphics.TBitmap 转换为 VCL.Graphics.TBitmap 或 Vcl.Imaging.PngImage.TPngImage? 我的项目中有FMX表单和VCL表
我需要找到用于间距目的的字体大小,发现这很有帮助:https://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html 但是,我不确定如
我有一点奇怪的错误是由一个看似简单的问题引起的。 在我的源代码中,我尝试使用 QQuickPaintedItem 来呈现 QWidget 派生类 (QPushButton) 的整体外观,然后将其绘制到
我正在尝试通过具有以下规范的设备来解决 Android 应用程序崩溃的问题: Device PAP3400DUO 1 Manufacturer — Android version Android 4.
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有这行代码: mBgTransition = (TransitionDrawable) mSwitchBg.getBackground(); 背景曾经是一个常规的可绘制对象, 但现在是 9 个补丁
当我的应用程序在启动时崩溃时尝试实现自适应图标时出现此错误。 我无法想象为什么会收到此错误,因为在下面错误日志中提到的文件(MainActivity 和 BaseActivity)中,我没有使用Ada
我是一名优秀的程序员,十分优秀!