import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
public class myClock extends JApplet implements ActionListener, Runnable {
Label time;
DateFormat timeFormat;
Thread timer;
int speed = 1, color;
JButton
b1,b2,b3;
TextField
t1,t3;
//JPanel panel;
JCheckBox
cb1 = new JCheckBox("Формат");
String sfont = "Arial";
String [] allFonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
//Font font = sfont;
volatile boolean running;
public void init() {
b1 = new JButton("Частота обновления");
b2 = new JButton("Шрифт");
b3 = new JButton("Цвет");
t1 = new TextField();
t3 = new TextField(14);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(t1);
cp.add(b1);
cp.add(b2);
//cp.add(t3);
//cp.add(b3);
//cp.add(cb1);
b1.addActionListener(this);
t1.addActionListener(this);
b2.addActionListener(this);
//t2.addActionListener(this);
//b3.addActionListener(this);
//t3.addActionListener(this);
time = new Label();
time.setFont(new Font(sfont, Font.BOLD, 12));
time.setAlignment(Label.CENTER);
setLayout(new BorderLayout());
add(time, BorderLayout.SOUTH);
timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
}
public void actionPerformed(ActionEvent e) {
//String str = ((JButton) e.getSource()).getText();
if (e.getSource()== b1){ speed = Integer.parseInt(t1.toString());}
if (e.getSource() == b2)
b2 = (JButton) JOptionPane.showInputDialog(null,"Выбери шрифт","Изменение шрифта",JOptionPane.INFORMATION_MESSAGE,null,allFonts,allFonts[0]);
//if (e.getSource() == b3)
}
public void start() {
running = true;
if (timer == null)
{
timer = new Thread(this);
timer.start();
}
}
public void run()
{
while(running)
{
time.setText(timeFormat.format(new Date()));
try { Thread.sleep(speed); }
catch (InterruptedException e) {}
}
timer = null;
}
public void stop() { running = false; }
public String[][] getParameterInfo() { return super.getParameterInfo();}
public String getAppletInfo() { return "Clock applet Copyright (с) 2010 by Roman Homenko";}
}
Не работают кнопки в апплете
Задание: Реализуйте апплет с цифровым отображением времени. Ваш апплет должен считывать параметры, указывающие частоту обновления таймера, а также шрифт, цвет и формат представления времени. (См. класс java.text.SimpleDateFormat для изучения механизма форматирования даты и времени в соответствии с заданным шаблоном.) Кроме того, добавьте метод getParameterInfo(), описывающий параметры апплета, которые вы определили, и измените метод getAppletInfo(), включив сообщение, описывающее ваше участие в создании апплета.
в строчке
Код:
if (e.getSource()== b1){ speed = Integer.parseInt(t1.toString());}
Так же не работает изменение шрифта, выдает ошибки, типа:
Код:
Exception in thread "AWT-EventQueue-1" java.lang.ClassCastException: java.lang.String cannot be cast to javax.swing.JButton
at myClock.actionPerformed(myClock.java:79)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at myClock.actionPerformed(myClock.java:79)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
Код:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.text.AttributedString;
import java.text.DateFormat;
import java.util.Date;
import java.util.Random;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.Timer;
import java.awt.font.FontRenderContext;
public class AppletClock extends JApplet implements ActionListener,Runnable {
public class JMyPanel extends JPanel {
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.setColor(scolor);
g.setFont(Font.decode(sfont));
g.drawString(time, 130, 100);
//Font fx = new Font((String) sfont, Font.BOLD, 444);
}
@Override
public void paintComponents(Graphics g) {
// TODO Auto-generated method stub
super.paintComponents(g);
}
}
volatile boolean running;
String time;
DateFormat timeFormat;
Thread timer;
int speed = 1, color;
JButton
b1,b2,b3;
TextField
t1;
JCheckBox
cb1 = new JCheckBox("Формат");
String sfont = "Arial";
Color scolor = Color.BLACK;
JPanel b,o;
String [] allFonts = {Font.SERIF,Font.MONOSPACED,Font.SANS_SERIF};
Color [] allColors = {Color.BLACK,Color.BLUE,Color.CYAN,Color.GREEN,Color.ORANGE,Color.RED,Color.YELLOW};
public void init() {
//Container c = getContentPane();
setLayout(new BorderLayout());
setSize(300, 300);
setMinimumSize(new Dimension (300,300));
b1 = new JButton("Частота обновления");
b2 = new JButton("Шрифт");
b3 = new JButton("Цвет");
t1 = new TextField();
b = new JPanel();
b.setBorder(new TitledBorder("Действия"));
b.add(t1);
b.add(b1);
b.add(b2);
b.add(b3);
b.setPreferredSize(new Dimension(300,100));
add(b,BorderLayout.NORTH);
o = new JMyPanel();
o.setBorder(new TitledBorder("Часы"));
o.setBackground(Color.WHITE);
o.setPreferredSize(new Dimension(300,300));
add(o);
b1.addActionListener(this);
t1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
//add(time, BorderLayout.SOUTH);
timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
new Timer(20,new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
o.repaint();
}
}).start();
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()== b1){ speed = Integer.parseInt(t1.getText());}
if (e.getSource() == b2)
sfont = (String)JOptionPane.showInputDialog(null,"Выбери шрифт","Изменение шрифта",JOptionPane.INFORMATION_MESSAGE,null,allFonts,allFonts[0]);
if (e.getSource() == b3)
scolor = (Color)JOptionPane.showInputDialog(null,"Выбери цвет","Изменение цвета",JOptionPane.INFORMATION_MESSAGE,null,allColors,allColors[0]);
}
public void start() {
running = true;
if (timer == null)
{
timer = new Thread(this);
timer.start();
}
}
public void run()
{
while(running)
{
time = (timeFormat.format(new Date()));
try { Thread.sleep(speed*1000); }
catch (InterruptedException e) {}
}
timer = null;
}
public void stop() { running = false; }
public String[][] getParameterInfo() { return pinfo;}
String pinfo[][] = {
{"Частота", "int","Частота обновления таймера"},
{"Шрифт" ,"Font", "Используемый шрифт"},
{"Цвет" , "", "Применяемый цвет"},
{"Формат даты","", ""}
};
public String getAppletInfo() { return "Clock applet Copyright (с) 2010 by Roman Homenko ";}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.text.AttributedString;
import java.text.DateFormat;
import java.util.Date;
import java.util.Random;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.Timer;
import java.awt.font.FontRenderContext;
public class AppletClock extends JApplet implements ActionListener,Runnable {
public class JMyPanel extends JPanel {
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.setColor(scolor);
g.setFont(Font.decode(sfont));
g.drawString(time, 130, 100);
//Font fx = new Font((String) sfont, Font.BOLD, 444);
}
@Override
public void paintComponents(Graphics g) {
// TODO Auto-generated method stub
super.paintComponents(g);
}
}
volatile boolean running;
String time;
DateFormat timeFormat;
Thread timer;
int speed = 1, color;
JButton
b1,b2,b3;
TextField
t1;
JCheckBox
cb1 = new JCheckBox("Формат");
String sfont = "Arial";
Color scolor = Color.BLACK;
JPanel b,o;
String [] allFonts = {Font.SERIF,Font.MONOSPACED,Font.SANS_SERIF};
Color [] allColors = {Color.BLACK,Color.BLUE,Color.CYAN,Color.GREEN,Color.ORANGE,Color.RED,Color.YELLOW};
public void init() {
//Container c = getContentPane();
setLayout(new BorderLayout());
setSize(300, 300);
setMinimumSize(new Dimension (300,300));
b1 = new JButton("Частота обновления");
b2 = new JButton("Шрифт");
b3 = new JButton("Цвет");
t1 = new TextField();
b = new JPanel();
b.setBorder(new TitledBorder("Действия"));
b.add(t1);
b.add(b1);
b.add(b2);
b.add(b3);
b.setPreferredSize(new Dimension(300,100));
add(b,BorderLayout.NORTH);
o = new JMyPanel();
o.setBorder(new TitledBorder("Часы"));
o.setBackground(Color.WHITE);
o.setPreferredSize(new Dimension(300,300));
add(o);
b1.addActionListener(this);
t1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
//add(time, BorderLayout.SOUTH);
timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
new Timer(20,new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
o.repaint();
}
}).start();
validate();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()== b1){ speed = Integer.parseInt(t1.getText());}
if (e.getSource() == b2)
sfont = (String)JOptionPane.showInputDialog(null,"Выбери шрифт","Изменение шрифта",JOptionPane.INFORMATION_MESSAGE,null,allFonts,allFonts[0]);
if (e.getSource() == b3)
scolor = (Color)JOptionPane.showInputDialog(null,"Выбери цвет","Изменение цвета",JOptionPane.INFORMATION_MESSAGE,null,allColors,allColors[0]);
}
public void start() {
running = true;
if (timer == null)
{
timer = new Thread(this);
timer.start();
}
}
public void run()
{
while(running)
{
time = (timeFormat.format(new Date()));
try { Thread.sleep(speed*1000); }
catch (InterruptedException e) {}
}
timer = null;
}
public void stop() { running = false; }
public String[][] getParameterInfo() { return pinfo;}
String pinfo[][] = {
{"Частота", "int","Частота обновления таймера"},
{"Шрифт" ,"Font", "Используемый шрифт"},
{"Цвет" , "", "Применяемый цвет"},
{"Формат даты","", ""}
};
public String getAppletInfo() { return "Clock applet Copyright (с) 2010 by Roman Homenko ";}
}