Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 14-й

Здравствуйте дорогие читатели!

Содержание

1.Начинающим
2.Тема "на заказ"
3.Вопрос - ответ
4.Программный код…
5.JavaScript

Начинающим

Булевы логические операторы

Булевы логические операторы, сводка которых приведена в таблице ниже, оперируют только с операндами типа boolean. Все бинарные ло­гические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.

Оператор Результат Оператор Результат
& логическое И (AND) &= И (AND) с присваиванием
| логическое ИЛИ (OR) |= ИЛИ (OR) с присваиванием
^ логическое исключающее ИЛИ (XOR) ^= исключающее ИЛИ (XOR) с присваиванием
|| оператор OR быстрой оценки выражений (short circuit OR) == равно
&& оператор AND быстрой оценки выражений (short circuit AND) != не равно
! логическое унарное отрицание (NOT) ?: тернарный оператор if-then-else

Результаты воздействия логических операторов на различные комби­нации значений операндов показаны в таблице.

A В OR AND XOR NOT A
false false false false false true
true false true false true false
false true true false true true
true true true true false false

Программа, приведенная ниже, практически полностью повторяет уже знакомый вам из прошлого номера пример BitLogic. Только но на этот раз мы работаем с булевыми логическими значениями.


class BoolLogic
{ 
 public static void main(String args[])
 { 
  boolean a = true; 
  boolean b = false; 
  boolean с = a | b; 
  boolean d = a & b; 
  boolean e = a ^ b; 
  boolean f = (!a & b) | (a & !b); 
  boolean g = !a; 
  System.out.println(" a = " + a); 
  System.out.println(" b = " + b); 
  System.out.println(" a|b = " + c); 
  System.out.println(" a&b; = " + d); 
  System.out.println(" a^b = " + e); 
  System.out.println("!a&b;|a&!b = " + f); 
  System.out.println(" !a = " + g); 
 }
} 



С: \> Java BoolLogic 
а = true 
b = false 
a|b = true 
a&b; = false 
a^b = true 
!a&b;|a&!b = true 
!a = false 

В следующем номере мы рассмотрим операторы быстрой оценки логических выражений (short circuit logical operators)

Тема "на заказ"

Печать из Java-приложений (продолжение)

Методы класса Printer

Теперь, когда мы определили printerObjects, которые мы будем применять, легко проследить, как объект Printer будет их использовать. Мы просто создаём новый экземпляр каждого типа printerObject и добавляем его в vector:


public void setFont(Font f)
{
  objects.addElement(new printFont(f));
}
//--------------------------------------
public void print(String s)
{
   objects.addElement(new printString(s));
}
//---------------------------------------------------
public void println(String s)
{
    print(s);
    objects.addElement(new newLine());
}
//--------------------------------------
public void tab(int tabstop)
{
   objects.addElement(new printTab(tabFont, tabstop));
}

Кроме данных методов печати, нам нужны методы newPage и endJob. Метод newPage фактически выполняет всю работу. Он вызывает метод print(g), который проходит через весь список printerObjects и вызывает их методы draw().


public void newPage()
{
 if (pjob == null) 
 pjob = getToolkit().getPrintJob(f, "Printer", null);
 pg = pjob.getGraphics();
 print(pg);              //прорисовываем весь вектор
 pg.dispose();           //печатаем страницу
 pt =new Point( 0,  0);  //инициализируем заново
 objects = new Vector(); //печатаем объекты
}
//-----------------------------------
public void print(Graphics g)
{
 printerObject p;
 f.setFont(fnt);       //начинать с определённого шрифта
 for (int i = 0; i < objects.size(); i ++) 
 {
  p = (printerObject)objects.elementAt(i);
  p.draw(g, pt); //рисуем каждый объект
 }
} 

Метод endJob() завершает PrintJob. Если вы игнорируете этот метод, вы можете также закончить PrintJob, вызвав его в методе finalize().


public void finalize()
{
 if (objects.size() > 0) //убеждаемся что все объекты напечатаны
 newPage();
 endJob();
}
//--------------------------------------
public void endJob()
{
   pjob.end();
}

Предварительный просмотр печатаемой страницы

С помощью объекта Printer, который мы только что создали, отобразить всю страницу на экране не представляет труда: просто нам нужно вызвать тот же метод print(g), используя объект Graphics экрана вместо объекта Graphics принтера. Откуда мы получаем объект graphics экрана? Мы берем его из стандартного метода paint(), который мы, в свою очередь, используем для вызова метода печати.


public void paint(Graphics g)
{
   pt = new Point(0, 0);  //always start at top
   print(g);      //displays text as preview
}

Всюпрограмму печати можно посмотреть в разделе "программный код".

Вопрос - ответ

Вопрос:
Немогли бы дать описание класса URL

Ответ:
Описание класса URL

Программный код…

Программа печати


import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class printing extends Frame  implements ActionListener, WindowListener
{
 Button b, show;
 Printer printer;
//---------------------------------------------------
 public printing()
 {
  super("print test");           //название фрейма
  addWindowListener(this);
  Panel p = new Panel();         //панель для кнопок
  add("South", p);
  b = new Button("Print");               //кнопки
  p.add("South", b);
  b.addActionListener(this);
  show = new Button("Show");
  p.add(show);
  show.addActionListener(this);
  printer = new Printer(this);
  setBounds(100,100,100,100);
  setVisible(true);
  loadStrings();                
 }
//---------------------------------------------------
 private void loadStrings()
 {
  //puts the text into the Printer object
  int i = 1;
  printer.setFont(new Font("SanSerif", Font.PLAIN, 12));
  printer.print(i++ +"."); printer.tab(10);
  printer.println("Hello printer");
  printer.print(i++ +".");  printer.tab(10);
  printer.setFont(new Font("SanSerif", Font.BOLD, 12));
  printer.println("A bold stroke");
  printer.print(i++ +".");  printer.tab(10);
  printer.setFont(new Font("SanSerif", Font.ITALIC, 18));
  printer.println("but emphatic");
 }
//---------------------------------------------------
 public void actionPerformed(ActionEvent ev)
 {
  Object obj = ev.getSource();
  if (obj == b) 
  {
   printer.newPage();     //распечатка на странице
   printer.endJob();
  }
  if (obj == show) 
  {
   showPreview(); //или на экране
  }
 }
//---------------------------------------------------   
 private void showPreview()
 {
  Dimension d = printer.pageSize();
  setBounds(0 , 0, d.width, d.height);
  printer.setBounds(0, 0, d.width, d.height);
  printer.setVisible(true);   
 }
//---------------------------------------------------   
 static public void main(String argv[])
 {
  new printing();
 }
//-------------------------------------------------
 public void windowClosing(WindowEvent wEvt)
 {
  System.exit(0);
 }
 public void windowClosed(WindowEvent wEvt){}
 public void windowOpened(WindowEvent wEvt){}
 public void windowIconified(WindowEvent wEvt){}
 public void windowDeiconified(WindowEvent wEvt){}
 public void windowActivated(WindowEvent wEvt){}
 public void windowDeactivated(WindowEvent wEvt){}
   
}



//===============================================



class Printer extends Canvas
{
 Frame f;          //родительский фрейм
 PrintJob pjob;    //объект printjob 
 Graphics pg;      //printer graphics
 Vector objects;   //массив инструкций для printer
 Point pt;         //текущая позиция принтера
 Font fnt;         //current font
 Font tabFont;     //шрифт
 public Printer(Frame frm)
 {
  f = frm;          //сохраняемая форма
  f.add(this);      //добавляем этот объект к форме
  setVisible(false);//но не показываем
  pjob = null;      //не распечатываем
  pt =new Point( 0,  0);  //инициализируем текущею позицию принтера
  objects = new Vector(); //и массив объектов
  tabFont = new Font("MonoSpaced", Font.PLAIN, 12);
  fnt = new Font("SansSerif", Font.PLAIN, 12);
 }
//--------------------------------------
 public void setFont(Font f)
 {
  objects.addElement(new printFont(f));
 }
//--------------------------------------
 public void print(String s)
 {
  objects.addElement(new printString(s));
 }
//---------------------------------------------------   
 public void println(String s)
 {
  print(s);
  objects.addElement(new newLine());
 }
//--------------------------------------
 public void newPage()
 {
  if (pjob == null) 
  pjob = getToolkit().getPrintJob(f, "Printer", null);
  pg = pjob.getGraphics();
  print(pg);
  pg.dispose();
  pt =new Point( 0,  0);  //инициализируем текущею позицию принтера
  objects = new Vector(); //и массив объектов
 }
//--------------------------------------
 public void finalize()
 {
  if (objects.size() > 0) 
  newPage();
  endJob();
 }
//--------------------------------------
 public void endJob()
 {
  pjob.end();
 }
//--------------------------------------
 public void tab(int tabstop)
 {
  objects.addElement(new printTab(tabFont, tabstop));
 }
//--------------------------------------
 public Dimension pageSize()
 {
  if (pjob == null) 
  return new Dimension(620, 790); 
  else
  {
   pjob = getToolkit().getPrintJob(f, "Printer", null);
   return pjob.getPageDimension();
  }
 }
//---------------------------------------------------   
 public void paint(Graphics g)
 {
  pt = new Point(0, 0);
  print(g);      //предварительный просмотр
 }
//---------------------------------------------------   
 public void print(Graphics g)
 {
  printerObject p;
  f.setFont(fnt);      //начать с этим шрифтом
  for (int i = 0; i < objects.size(); i ++) 
  {
   p = (printerObject)objects.elementAt(i);
   p.draw(g, pt);
  }
 }
}  



//===================================================



abstract class printerObject
{
 abstract void draw(Graphics g, Point p);
}



//===================================================



class newLine extends printerObject
{
 public void draw(Graphics g, Point p)
 {
  p.x = 0;
  p.y += g.getFontMetrics(g.getFont()).getHeight();
 }
}



//=====================================================



class printString extends printerObject
{
 String st;
 public printString(String s)
 {
  st = s;
 }
//-------------------------------------------------
 public void draw(Graphics g, Point p)
 {
  g.drawString(st, p.x, p.y);
  p.x += g.getFontMetrics(g.getFont()).stringWidth(st);

 }
}



//===================================================



class printFont extends printerObject
{
 Font fnt;
 public printFont(Font f)
 {
  fnt = f;
 }
//--------------------------------------------------   
 public void draw(Graphics g, Point p)
 {
  g.setFont(fnt);
  if (p.y <= 0) 
  {
   p.y = g.getFontMetrics(fnt).getHeight();
  }
 }
}



//===================================================



class printTab extends printerObject
{
 static int tab_width = 0;
 int tab_dist;
 Font tabFnt;
 public printTab(Font tbFont, int tabdist)
 {
  tabFnt = tbFont;
  tab_dist = tabdist;
 }
 public void draw(Graphics g, Point p)
 {
  if (tab_width == 0)
  tab_width = g.getFontMetrics(tabFnt).stringWidth("W");
  if (p.x < (tab_dist*tab_width)) 
  {
   p.x = tab_dist * tab_width;
  }
 }
}


JavaScript

Вопрос:
Как в history вернуться на несколько позиций сразу?

Ответ: Надо использовать метод go(), например:


<a; href="javascript:history.go(-2)">Назад на две позиции</a>

или

<a; href="javascript:history.go(2)">Вперёд на две позиции</a>

Вопрос:Я где то видела часики в строке статуса, как это можно сделать?
Светик

Ответ:


<html;>
<head;>
<title;>Часы</title>
<script; language="JavaScript">
function clock()
{
 today=new Date();
 clock_status=today.getHours()+":"+today.getMinutes()+":"+today.getSeconds()
 status=clock_status;
 setTimeout("clock()",100);
}
</script>
</head>
<body; onLoad="clock()">
</body>
</html>

Можете глянуть ещё пару вариантов часиков тут.

Вопросы присылайте на E-mail [email protected] с пометкой "вопрос по Java".

Жду вопросов и предложений.
Юрий Ладик.

Подписаться на эту рассылку можно тут /subs/subs.html


Питер Дж. ДеПаскуале
"Java: Карманный справочник"
Подробнее>>
Заказать>>


Кей С. Хорстманн, Гари Корнелл
"Java 2. Библиотека профессионала. Том 1. Основы"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!



Выпуск 29-й
Выпуск 28-й
Выпуск 27-й
Выпуск 26-й
Выпуск 25-й
Выпуск 24-й
Выпуск 23-й
Выпуск 22-й
Выпуск 21-й
Выпуск 20-й
Выпуск 19-й
Выпуск 18-й
Выпуск 17-й
Выпуск 16-й
Выпуск 15-й
Выпуск 14-й
Выпуск 13-й
Выпуск 12-й
Выпуск 11-й
Выпуск 10-й
Выпуск 9-й
Выпуск 8-й
Выпуск 7-й
Выпуск 6-й
Выпуск 5-й
Выпуск 4-й
Выпуск 3-й
Выпуск 2-й
Выпуск 1-й