Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зум на java 
:(
    Опции темы
riddickfmi
  Дата 17.2.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.2.2011

Репутация: нет
Всего: нет



Здравствуйте! 
Задачка такая: Есть 2 панели. На одной, например, какой 
то рисунок, на второй полоска прокрутки. Нужно что нибудь придумать, 
чтобы при изменении параметров у скроллинга на второй панели, 
увеличивалась или уменьшалось то, что отрисовывается на первой панели. Я просто даже представления не имею как можно это реализовать..  smile  Если у кого то есть идеи по этой задачке - прошу поделится. 

Код

import java.awt.*;
import javax.swing.*;
import java.applet.*;
 
public class zooming extends Applet
{
        FirstPanel fPanel;
        SecondPanel sPanel;
 
        public void init()
        {
                setLayout(null);
                setBackground(Color.black);
 
                fPanel = new FirstPanel();
                add(fPanel);
                fPanel.setBounds(10,10,300,300);
                fPanel.setBackground(Color.white);
 
                sPanel = new SecondPanel();
                add(sPanel);
                sPanel.setBounds(320,10,300,300);
                sPanel.setBackground(Color.lightGray);
        }
}
 
class FirstPanel extends Panel
{
        public void paint(Graphics g)
          {
            g.drawLine(10,10,150,150);
            g.drawLine(150,10,150,150);
            g.drawLine(290,10,150,150);
 
            super.paint(g);
  }
}
 
class SecondPanel extends Panel
{
        public SecondPanel()
        {
                JScrollBar scr = new JScrollBar();
                add(scr);
                scr.setBounds(10,10,300,140);
                scr.setPreferredSize(new Dimension(100,200));
        }
 
        public void paint(Graphics g)
          {
            g.drawString("Value is ", 10, 50);
            super.paint(g);
  }
}

PM MAIL   Вверх
riddickfmi
  Дата 18.2.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.2.2011

Репутация: нет
Всего: нет



мда... я понял, что тут специалистов на java нет =( Умничать только можете... 
PM MAIL   Вверх
dorogoyIV
Дата 18.2.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



апплеты уже не помню и не хочется вспоминать smile 
могу на swing сделать...

PS:
и вот таких выражений не надо  smile 
Цитата(riddickfmi @  18.2.2011,  17:49 Найти цитируемый пост)
Умничать только можете... 


PM MAIL   Вверх
dorogoyIV
Дата 18.2.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



вот для swing намулевал что то, если честно, просто лень было...  smile 
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.imageio.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
import java.awt.image.*;

public class Test extends JFrame
                  implements ChangeListener
{
 private JFileChooser chooser;
 private File file;
 private MyPanel panel;
 private JSlider v = new JSlider(0, 50, 0);
 private JSlider h = new JSlider(0, 50, 0);

 public Test()
 {
  chooser = new JFileChooser(System.getProperty("user.dir"));

  chooser.setFileFilter(new MyFilter(".bmp"));
  chooser.setFileFilter(new MyFilter(".png"));
  chooser.setFileFilter(new MyFilter(".jpg"));
  chooser.setFileFilter(new MyFilter(".jpeg"));
  chooser.setFileFilter(new MyFilter(".gif"));

  chooser.showOpenDialog(null);
  file = chooser.getSelectedFile();
  String s = file.getName();

  if(s.endsWith(".bmp") || s.endsWith(".png") ||
     s.endsWith(".jpg") || s.endsWith(".jpeg") ||
     s.endsWith(".gif"))
   initFrame();
 }

 private void initFrame()
 {
  setDefaultCloseOperation(3);
  setBounds(100, 100, 400, 300);

  panel = new MyPanel(file);
  add(panel);

  v.setOrientation(JSlider.VERTICAL);
  h.setOrientation(JSlider.HORIZONTAL);
  v.addChangeListener(this);
  h.addChangeListener(this);

  add(v, "East");
  add(h, "South");

  setVisible(true);
 }

 public void stateChanged(ChangeEvent e)
 {
  if(e.getSource().equals(h))
   panel.resizeWidth(h.getValue());
  else
   panel.resizeHeight(v.getValue());
 }

 public static void main(String [] args)
 {
  SwingUtilities.invokeLater(new Runnable()
  {
   public void run()
   {
    new Test();
   }
  });
 }
}

class MyFilter extends FileFilter
{
 String descr;

 MyFilter(String descr)
 {
  this.descr = descr;
 }

 public boolean accept(File file)
 {
  if(file.isDirectory())
   return true;
  return file.getName().endsWith(descr);
 }

 public String getDescription()
 {
  return descr;
 }
}

class MyPanel extends JPanel
{
 File file;
 BufferedImage bi;
 private int scale = 1;

 MyPanel(File file)
 {
  this.file = file;

  try
  {
   bi = ImageIO.read(file);
  }
  catch(Exception ex){}
 }

 public void paintComponent(Graphics g)
 {
  g.drawImage(bi, 0, 0, getWidth() * scale, getHeight() * scale, null);
 }

 public void resizeWidth(int w)
 {
  scale = w;
  validate();
  repaint();
 }

 public void resizeHeight(int h)
 {
  scale = h;
  validate();
  repaint();
 }
}

PM MAIL   Вверх
riddickfmi
Дата 19.2.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.2.2011

Репутация: нет
Всего: нет



dorogoyIV спасибо, что ответили  smile. Теперь у меня есть мысль как реализовать свою задачку  smile

p.s. хулиганить больше не буду  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.