Есть очень простенькое приложение с интерфейсом на Java с использованием Swing. Его смысл — считывать нажатия на клавиши и менять координаты отрисовки квадратика. Вся проблема в том, что на Ubuntu анимация ужасно тормозит, а вот на Windows все плавно летает.
В чем может быть проблема? В ос или в приложении?
P.s - код писал не я
View:
class View extends JComponent implements ActionListener
{
private Timer timer;
private int repaintsPerSecond;
public View()
{
repaintsPerSecond = 30;
timer = new Timer(1000 / repaintsPerSecond, this);
}
public void start()
{
timer.start();
}
public void stop()
{
timer.stop();
}
@Override
public void actionPerformed(ActionEvent e)
{
repaint();
}
@Override
public void paintComponent(Graphics g)
{
g.setColor(Color.black);
Player p;
Point loc;
int s;
for(int i = 0; i < Main.players.size(); i++)
{
p = Main.players.get(i);
loc = p.getLocation();
s = p.getSize();
g.setColor(p.getColor());
g.fillRect((int)loc.getX(), (int)loc.getY(), s, s);
}
}
}
Controller:
class Controller implements KeyListener, ActionListener
{
public View v;
private Player player;
private Timer timer;
private boolean isUp, isLeft, isRight, isDown;
public Controller(Player player, int delay)
{
this.player = player;
timer = new Timer(delay, this);
}
public void start()
{
timer.start();
}
public void stop()
{
timer.stop();
}
@Override
public void actionPerformed(ActionEvent e)
{
if(isUp)
player.stepUp();
if(isLeft)
player.stepLeft();
if(isRight)
player.stepRight();
if(isDown)
player.stepDown();
v.repaint();
}
@Override
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case 87://w
isUp = true;
break;
case 65://a
isLeft = true;
break;
case 68://d
isRight = true;
break;
case 83://s
isDown = true;
break;
}
}
@Override
public void keyReleased(KeyEvent e)
{
switch(e.getKeyCode())
{
case 87://w
isUp = false;
break;
case 65://a
isLeft = false;
break;
case 68://d
isRight = false;
break;
case 83://s
isDown = false;
break;
}
}
@Override
public void keyTyped(KeyEvent e)
{
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привет, появилась проблема не могу передать изображение во фрагментУ меня есть адаптер RecyclerView ProductAdapter, есть Фрагмент в котором собственно...
I'm develop a basic Java3d applicationHow to add physics to Java3d application and does it even exit for Java3d ? Please help me or give me advice