Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не работают кнопки в апплете

53K
22 декабря 2010 года
Sawans
17 / / 24.05.2010
Задание: Реализуйте апплет с цифровым отображением времени. Ваш апплет должен считывать параметры, указывающие частоту обновления таймера, а также шрифт, цвет и формат представления времени. (См. класс java.text.SimpleDateFormat для изучения механизма форматирования даты и времени в соответствии с заданным шаблоном.) Кроме того, добавьте метод getParameterInfo(), описывающий параметры апплета, которые вы определили, и измените метод getAppletInfo(), включив сообщение, описывающее ваше участие в создании апплета.
Не работают кнопки, помогите!!!
Код:
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";}
}
53K
22 декабря 2010 года
Sawans
17 / / 24.05.2010
убрал строку setLayout(new BorderLayout()); , кнопки стали появлятся,
в строчке
 
Код:
if (e.getSource()== b1){ speed = Integer.parseInt(t1.toString());}
поменял t1.toString на t1.getText()[/quote]

Так же не работает изменение шрифта, выдает ошибки, типа:
 
Код:
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)
53K
24 декабря 2010 года
Sawans
17 / / 24.05.2010
Переписал под Graphics. Шрифты так и не понял почему все не работают, а только три. Осталось сделать формат времени, но я как то не совсем понимаю что требуется(
Код:
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 ";}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог