Java 为什么实现ActionListener会使小程序收缩(实际上)?
我最近在java中创建了一个MakeDots类,当你拖动鼠标时,它会生成点(耶!)。我为此实现了一个MouseMotionListener。它工作得很好。然后我添加了一些按钮来改变点的颜色。我为此添加了ActionListeners。一旦我这样做了,颜色的变化工作,但我只能在非常小的按钮边界画!为什么会发生这种情况?我怎么修理它?如果你需要我发布我的代码,只要在评论中说出来,我就会这么做 代码:Java 为什么实现ActionListener会使小程序收缩(实际上)?,java,applet,awt,actionlistener,mousemotionlistener,Java,Applet,Awt,Actionlistener,Mousemotionlistener,我最近在java中创建了一个MakeDots类,当你拖动鼠标时,它会生成点(耶!)。我为此实现了一个MouseMotionListener。它工作得很好。然后我添加了一些按钮来改变点的颜色。我为此添加了ActionListeners。一旦我这样做了,颜色的变化工作,但我只能在非常小的按钮边界画!为什么会发生这种情况?我怎么修理它?如果你需要我发布我的代码,只要在评论中说出来,我就会这么做 代码: 您可能想做的事情很少。每次添加actionListener()时,您都会失去编写actionPerf
您可能想做的事情很少。
每次添加
actionListener()
时,您都会失去编写actionPerformed(…)
的习惯。只需使用getActionCommand()
检查哪个按钮触发了事件。另外,创建一个Color()
的全局对象,并在actionPerformed()
中更新它。我认为如果需要帮助,您需要发布代码。如果您将按钮添加到绘图画布中,按钮将使用鼠标事件。尝试将按钮添加到自己的容器中,并将绘图表面和按钮布局到主视图的不同区域container@MadProgrammer你能给我举个例子吗?我不太明白你的意思…你已经把你的按钮添加到了你想画的同一个表面上,你需要把它们分成不同的容器。为什么要使用基于AWT的API?它已经过时15年了。您也不应该在绘制周期中维护对图形上下文和绘制外侧的引用。。。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
public class MakeDots extends Applet implements MouseMotionListener{
private Graphics graphics = null;
private Color dotColor = Color.red;
private Button setRed;
private Button setPink;
private Button setPurple;
private Button clrBtn;
public void init() {
setRed = new Button("Red");
setPink = new Button("Pink");
setPurple = new Button("Purple");
clrBtn = new Button("Clear");
this.addMouseMotionListener(this);
this.add(setRed);
this.add(setPink);
this.add(setPurple);
this.add(clrBtn);
setRed.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dotColor = Color.red;
}
});
setPink.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dotColor = Color.pink;
}
});
setPurple.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dotColor = new Color(80, 0, 80);
}
});
clrBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
clear();
}
});
}
public void paint(Graphics g) {
this.setSize(new Dimension(800, 600));
graphics = g.create();
clear();
}
public void drawDot(int x, int y) {
graphics.setColor(dotColor);
graphics.fillOval(x, y, 10, 10);
}
public void clear() {
Dimension d = this.getSize();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, d.width, d.height);
}
@Override
public void mouseDragged(MouseEvent e) {
int mouseX = e.getX();
int mouseY = e.getY();
drawDot(mouseX, mouseY);
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}