#swing
#swing
Вопрос:
Я создал одну панель задач. Но я хочу отображать эту панель задач один раз в час, когда пользователь нажимает на кнопку напоминания, и панель задач должна закрыться и снова открыться через час.Пожалуйста, найдите приведенный ниже код.
Пожалуйста, помогите мне в этом, пожалуйста!!
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class RadioButtons {
public static void main(String[] args) {
Radiobutton r=new Radiobutton();
}
}
class Radiobutton extends JFrame implements ActionListener
{
JButton b1,b2;
JLabel l1,l2;
public Radiobutton()
{
l1=new JLabel("Pending");
l2=new JLabel("Pending");
b1=new JButton("AVM DART");
b2=new JButton("HANDSHAKE");
add(b1);
add(l1);
add(b2);
add(l2);
b1.setBackground(Color.RED);
b2.setBackground(Color.RED);
b1.setPreferredSize(new Dimension(200, 50));
b2.setPreferredSize(new Dimension(200, 50));
b1.addActionListener(this);
b2.addActionListener(this);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice defaultScreen = ge.getDefaultScreenDevice();
Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds();
int x = (int) rect.getMaxX() -300;
int y = 500;
setLocation(x, y);
setLayout(new FlowLayout());
setVisible(true);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(e.getSource()==b1)
{
if (((Component)source).getBackground().equals(Color.GREEN))
{
((Component)source).setBackground(Color.RED);
l1.setText("Pending");
}
else
{
((Component)source).setBackground(Color.GREEN);
l1.setText(" Done");
}
}
if(e.getSource()==b2)
{
if (((Component)source).getBackground().equals(Color.GREEN))
{
((Component)source).setBackground(Color.RED);
l2.setText("Pending");
} else
{
((Component)source).setBackground(Color.GREEN);
l2.setText(" Done");
}
}
}
}
Комментарии:
1. Напоминание будет работать только в том случае, если ваш Java-код не завершен. Это будет нормально?
2. Да, конечно, для меня это нормально
Ответ №1:
Я предполагаю, что класс RadioButton — это ваша панель задач, которую вы хотите всплывать один раз в час. Интерфейс «ScheduledExecutorService» может выполнить вашу работу здесь.
Пример:
public class RadioButtons
{
// This is the Scheduler that we will execute every hour
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public static void main(String[] args)
{
// instead of instantiating it here, we will do this in a thread.
//Radiobutton r = new Radiobutton();
final Runnable beeper = new Runnable()
{
public void run()
{
// do anything here that you want to execute in a scheduler.
Radiobutton r=new Radiobutton();
}
};
//finally we schedule the scheduler to execute Runnable every hour.
final ScheduledFuture<?> beeper = scheduler.scheduleAtFixedRate(beeper, 0, 1, TimeUnit.HOURS);
}
}
Примечание: ваш фрейм запустится сразу после запуска программы, а затем через каждый час. Кроме того, если вы не закроете фрейм, то через час откроется новый фрейм (старый фрейм не закроется, пока кто-нибудь не закроет его вручную).
Вы можете прочитать больше о ScheduledExecutorService
и его методе scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
на https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
Комментарии:
1. Большое спасибо Ришабу Кумару.. Это может быть полезно.. Однако, пожалуйста, дайте мне знать, как поддерживать сеанс в приложении. Поскольку мне нужно отобразить задачу, которая также была завершена
2. Под завершением вы подразумеваете появление фрейма класса Radio?
3. Нет Rishabh. Если вы запустите мое приложение, вы увидите задачу в состоянии «ожидание», как только пользователь нажмет на задачу, в нем появится сообщение как «Готово». Я хочу поддерживать это состояние в течение дня. Но здесь, если мы запускаем его через час, оно запускается как новое приложение, и все задачи снова меняются на ожидающие..
4. Хорошо, тогда для этого вы можете использовать метод setVisible(). Инициализируйте объект вашего класса RadioButton в main(). В планировщике установите для видимости этого объекта значение true. Также удалите setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); из вашего конструктора переключателей. Теперь всякий раз, когда кто-то закрывает фрейм, он просто скроется и не закроется. Затем планировщик может установить его видимым на своевременной основе. Это сохранит состояние вашего фрейма.