【发布时间】:2020-11-04 08:11:10
【问题描述】:
每当我按下空格键或任何其他键时,我尝试配置它都不会更改“pixelsizemodifier”变量。我什至无法将其打印到控制台。我不知道我哪里错了。除此之外运行完美。
提前为我糟糕的代码道歉。有段时间没写,靠记忆试验。
我想要它做的是接受一个关键事件来更改变量,例如像素大小或像素密度或颜色等以后的事情。
package square;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class main extends JPanel implements KeyListener {
Random rand;
int randomInt, boxQuantity, lineCount, ovalCount;
static JFrame frame;
static JPanel p;
boolean painting = false;
int re,gr,bl;
Color color;
int pixelsize , pixelsizemodifier = 10, pixeldistance;
public static void main(String[] args) {
frame = new JFrame("Welcome!");
frame.getContentPane().add(new main());
frame.setSize(800,600);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setVisible(true);
p = new JPanel();
p.setVisible(true);
frame.add(p);
new main().go();
}
public void go() {
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paint(Graphics g) {
super.paint(g);
rand = new Random();
boxQuantity = 0;
ovalCount = 0;
for (int x = 0; x < frame.getWidth()/10; x++) {
for (int y = 0; y < frame.getHeight()/10; y++) {
re = rand.nextInt(255);
gr = rand.nextInt(255);
bl = rand.nextInt(255);
color = new Color(re , gr , bl);
g.setColor(color);
randomInt = rand.nextInt(4);
pixelsize = rand.nextInt(pixelsizemodifier);
pixeldistance = rand.nextInt(11);
switch (randomInt) {
case 0:
g.fillRect(x*10, y*pixeldistance, pixelsize, pixelsize);
break;
case 1:
g.fillRect(x*10, y*pixeldistance, pixelsize, pixelsize);
break;
case 2:
g.fillRect(x*10, y*pixeldistance, pixelsize, pixelsize);
break;
case 3:
g.fillRect(x*10, y*pixeldistance, pixelsize, pixelsize);
break;
}
boxQuantity++;
}
}
System.out.println("width: " + frame.getWidth()/10 + " / bq: " + boxQuantity + " / psm: " + pixelsizemodifier);
repaint();
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
pixelsizemodifier++;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
pixelsizemodifier++;
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
标签: java swing graphics keylistener