На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела Java FAQ
1. Данный раздел предназначен только для публикации готовых статей, с вопросами обращайтесь в соответствующие подразделы.
2. Все вопросы, связанные с ошибками или неточностями в представленных материалах направляйте модераторам персональным сообщением.
3. Все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут доступны остальным участникам после одобрения модераторами.
Модераторы: dark_barker, wind
  
> Нестандартная кнопка с рисунком, статья из старых Java FAQ
    Результатом данногой программы является круглая кнопка с изображенным на ней рисунком чашечки дымящегося кофе (за художеские способности, или вернее -- их отсутсвие, просьба гнилыми бананами не кидать :)).

    ExpandedWrap disabled
      import java.awt.*;
      import java.awt.event.*;
      class UnButton extends Component implements MouseListener
      {
        private boolean isDown=false;
        public UnButton()
        {
          super();
          addMouseListener(this);
          enableEvents(AWTEvent.MOUSE_EVENT_MASK);
        }
        public void drawUn(Graphics g, int x, int y, int w, int h)
        { //Здесь рисуется рисунок, который потом будет на кнопке
          g.drawLine(x+10, h-13, 3*w/4, h-13);
          g.drawLine(x+11, h-12, 3*w/4-1, h-12);
          g.drawLine(x+12, h-11, 3*w/4-2, h-11);
          g.fillOval(w/4, h/2-2, 3*w/6, h/8);
          g.drawLine(w/4, h/2, x+17, h-13);
          g.drawLine(w/4+3*w/6, h/2, 3*w/4-8, h-13);
          g.drawArc(w/2-5, h/3-5, w/6, h/6, -45, 180);
          g.drawArc(w/3, h/4-5, w/6, h/6, 135, 180);
        }
        public void paint (Graphics g)
        { //Создаем саму кнопку с рисунком
          int w=getSize().width, h=getSize().height;
          int d=Math.min(w, h);
          Color c=g.getColor();
          g.setColor(Color.lightGray);
          g.fillArc(0, 0, d, d, 0, 360);
          g.setColor(c);
          if (isDown)
          {
            g.drawArc(0, 0, d, d, 43, 180);
            g.drawArc(1, 1, d-2, d-2, 43, 180);
            drawUn(g, 8, 10, d, d);
          } else
          {
            g.drawArc(0, 0, d, d, 229, 162);
            g.drawArc(1, 1, d-2, d-2, 225, 170);
            drawUn(g, 6, 8, d, d);
          }
          super.paint(g);
        }
        public Dimension getPreferredSize()
        {
          return new Dimension(30, 30);
        }
        public Dimension getMinimumSize()
        {
          return getPreferredSize();
        }
        public Dimension getMaximumSize()
        {
          return getPreferredSize();
        }
        public void mousePressed(MouseEvent e)
        {
          isDown=true;
          repaint();
        }
        public void mouseReleased(MouseEvent e)
        {
          isDown=false;
          repaint();
        }
        public void mouseEntered(MouseEvent e){}
        public void mouseExited(MouseEvent e){}
        public void mouseClicked(MouseEvent e){}
      }
       
      public class DrawButton extends Frame
      { // Для сравнения приводится и стандартная кнопка
        DrawButton(String s)
        {
          super(s);
          setLayout(null);
          setBackground(Color.white);
          Button b=new Button("OK");
          b.setBounds(200, 50, 100, 60); add(b);
          UnButton d=new UnButton();
          d.setBounds(50,50,65,65); add(d);
          setSize(400,150);
          setVisible(true);
        }
        public static void main(String[]args)
        {
          Frame f=new DrawButton("The button with a picture");
          f.addWindowListener(new WindowAdapter()
          {
            public void windowClosing(WindowEvent ev)
            {
              System.exit(0);
            }
          });
        }
      }

    [Автор - Angie]
    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script Execution time: 0,0659 ]   [ 14 queries used ]   [ Generated: 23.10.19, 20:55 GMT ]