flexbox не очень хорошо реагирует на поля.
Лучший подход / обходной путь, который я предпочитаю, состоит в том, чтобы убедиться, что все дети Flex имеют 0 полей, установите контейнер flex в justify-content: space-between;
, а затем дать детям общую ширину менее 100%. Остальная часть будет вашей маржой.
Другими словами, если вам нужно два элемента в строке, установите каждый на 49% в ширину, и у вас будет 2% пространства между ними. Три элемента, каждый по 32% в ширину, и у вас будет 2% между ними. В примере калькулятора ячейка 0
должна быть 66%, а остальные 32%.
Изменить: обратите внимание, что, поскольку причины (а именно, что content-box
ужасны), если у кого-либо из ваших детей есть границ, вам нужно будет использовать box-sizing: border-box
для правильного работы моего предложения.
Взгляните на ScheduledExecutorService :
Вот класс с методом, который устанавливает ScheduledExecutorService для звукового сигнала каждые десять секунд в течение часа:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
Попробуйте это. Он будет повторять функцию run () каждые заданные минуты. Чтобы изменить заданные минуты, измените переменную MINUTES
int MINUTES = 10; // The delay in minutes
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() { // Function runs every MINUTES minutes.
// Run the code you want here
CLASSB.funcb(); // If the function you wanted was static
}
}, 0, 1000 * 60 * MINUTES);
// 1000 milliseconds in a second * 60 per minute * the MINUTES variable.
Не забудьте выполнить импорт!
import java.util.Timer;
import java.util.TimerTask;
Для получения дополнительной информации перейдите сюда:
http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html http://docs.oracle.com/javase/7 /docs/api/java/util/TimerTask.html
Решение с Java 8
ClassB b = new ClassB();
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = () -> {
b.funb();
};
executor.scheduleWithFixedDelay(task, 0, 10, TimeUnit.MINUTES);
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class ClassExecutingTask {
long delay = 10 * 1000; // delay in milliseconds
LoopTask task = new LoopTask();
Timer timer = new Timer("TaskName");
public void start() {
timer.cancel();
timer = new Timer("TaskName");
Date executionDate = new Date(); // no params = now
timer.scheduleAtFixedRate(task, executionDate, delay);
}
private class LoopTask extends TimerTask {
public void run() {
System.out.println("This message will print every 10 seconds.");
}
}
public static void main(String[] args) {
ClassExecutingTask executingTask = new ClassExecutingTask();
executingTask.start();
}
}