Java Swing Первые программы

Материал из Wiki.crossplatform.ru

(Различия между версиями)
Перейти к: навигация, поиск
(A tooltip)
(Tooltip - всплывающая подсказка)
Строка 226: Строка 226:
}
}
</source>
</source>
-
In the example, we set the tooltip for the frame and the button.
+
В этом примере мы настроили всплывающую подсказку (tooltip) для панели и кнопки.
<source lang="cpp">
<source lang="cpp">
  panel.setToolTipText("A Panel container");
  panel.setToolTipText("A Panel container");
</source>
</source>
-
To enable a tooltip, we call the <i>setTooltipText()</i> method.
+
Для установки текста всплывающей подсказки мы использовали метод <i>setTooltipText()</i>.
[[image: java_swing_tooltip.jpg | center]]
[[image: java_swing_tooltip.jpg | center]]
[[Категория:Java]]
[[Категория:Java]]

Версия 13:06, 24 февраля 2009

В этой главе мы напишем нашу первую программу исползуя Swing. Пример будет весьма простеньким. Будет охвачена лишь некоторая часть основных функциональных возможностей.


Содержание

Наш первый примерчик

В нашем первом примере мы покажем основное окно.

import javax.swing.JFrame;
 
 
public class Simple extends JFrame {
 
    public Simple() {
 
        setSize(300, 200);
        setTitle("Simple");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
   }
 
    public static void main(String[] args) {
 
        Simple simple = new Simple();
        simple.setVisible(true);
 
    } 
}

Несмотря на то, что приведенный фрагмент кода достаточно мал, окно приложения может делать достаточно много. Оно может изменять размер, максимизироваться, минимизироваться. При этом все сложности реализации сокрыты от прикладного разработчика.

 import javax.swing.JFrame;

Эта строчка кода осуществляет импорт класса JFrame из пакета javax.swing.JFrame. Этого можно было бы и не делать, но тогда приходилось бы каждый раз писать javax.swing.JFrame вместо JFrame - прим. переводчика. В данном случае, JFrame - это контейнер, который используется для размещения на нем других виджетов.

 setSize(300, 200);
 setTitle("Simple");

Этот фрагмент коде изменяет размер экрана, устанавливая его равным 300 пикселям по ширине и 200 пикселям по высоте. Также в качестве заголовка окна устанавливается "Simple".

 setDefaultCloseOperation(EXIT_ON_CLOSE);

Этот метод будет закрывать окно, если мы нажмем на кнопку закрытия окна ("крестик"). По умолчанию ничего не происходит. Примечание переводчика: Это не совсем так. По умолчанию приложение может и не завершить работу по нажатию на "крестик", но само окно может исчезнуть с экрана

center

Позиционируем окно по центру экрана

По умолчанию, окно, отображаемое на экране, расположено не по центру. В большинстве случаев оно будет расположенов левом верхнем углу. Следующий фрагмент кода реализует окно, расположенное строго по центру экрана, вне зависимости от разрешения последнего.

import java.awt.Dimension;
import java.awt.Toolkit;
 
import javax.swing.JFrame;
 
public class CenterOnScreen extends JFrame {
 
    public CenterOnScreen() {
 
        setSize(300, 200);
        setTitle("CenterOnScreen");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
        Toolkit toolkit = getToolkit();
        Dimension size = toolkit.getScreenSize();
        setLocation(size.width/2 - getWidth()/2, 
		size.height/2 - getHeight()/2);
    }
 
    public static void main(String[] args) {
 
        CenterOnScreen cos = new CenterOnScreen();
        cos.setVisible(true);
 
    }
}

Для центрирования окна на экране мы сначала должны узнать разрешение монитора. Для этого мы используем класс Toolkit.

 Toolkit toolkit = getToolkit();
 Dimension size = toolkit.getScreenSize();

Используя объект (экземпляр) toolkit класса Toolkit, выясняем размер экрана.

 setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2);

Для непосредственно центрирования окна, вызовем метод setLocation().

Два Button'а (Кнопки)

В нашем следующем примере мы создадим и покажем два объекта типа Button. Первая кнопка будет отвечать за воспроиздедение звукового сигнала, а вторая - за закрытие окна.

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
public class Buttons extends JFrame {
 
    private Toolkit toolkit;
 
    public Buttons() {
 
        setTitle("Buttons");
        setSize(300, 200);
 
        toolkit = getToolkit();
        Dimension size = toolkit.getScreenSize();
        setLocation((size.width - getWidth())/2, (size.height - getHeight())/2);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
        JPanel panel = new JPanel();
        getContentPane().add(panel);
 
	panel.setLayout(null);
 
        JButton beep = new JButton("Beep");
        beep.setBounds(150, 60, 80, 30);
        beep.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                toolkit.beep();
            }
        });
 
       JButton close = new JButton("Close");
       close.setBounds(50, 60, 80, 30);
       close.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent event) {
               System.exit(0);
          }
       });
 
        panel.add(beep);
        panel.add(close);
 
    }
 
    public static void main(String[] args) {
 
        Buttons buttons = new Buttons();
        buttons.setVisible(true);
 
    }
}

В это примере мы рассмотрим две новые для нас темы - управление внешним видом и обработку событий. Эти темы будут затронуты лишь вскользь, поскольку каждой из них в дальшейшем посвящена соответсвующая глава.

 JPanel panel = new JPanel();
 getContentPane().add(panel);

Здесь мы создаем объект с именем panel классаJPanel. Сие есть общий легковесный контейнер. Далее добавляем объект класса JPanel к объекту класса JFrame.

 panel.setLayout(null);

По умолчанию, JPanel имеет менеджер FlowLayout. Менеджер размещения используются для расположения виджетов внутри их контейнеров. Если вызвать setLayout(null), то мы сможем выполнять абсолютное позиционирование наших компонент. Для этого будем использовать метод setBounds().

 JButton beep = new JButton("Beep");
 beep.setBounds(150, 60, 80, 30);
 beep.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent event) {
         toolkit.beep();
     }
 });

В этом фрагменте создается кнопка (объект типа Button). Мы позиционируем ее посредством метода setBounds(). Далее мы добавим обработчик событий. Он будет вызван, после того как мы нажмем кнопку (совершим действие, наступит событие). Кнопка, ответсвенная за воспроизведение короткого звукого сигнал, собственно этим и будет заниматься.

 System.exit(0);

Кнопка close обеспечивает завершение работы приложения. Для этого мы будем вызывать метод System.exit().

 panel.add(beep);
 panel.add(close);

Для того чтобы кнопки стали видимыми, мы добавим их на панель.

center

Tooltip - всплывающая подсказка

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

import java.awt.Dimension;
import java.awt.Toolkit;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
public class Tooltip extends JFrame {
 
    private Toolkit toolkit;
 
    public Tooltip() {
 
        setTitle("Tooltip");
        setSize(300, 200);
 
        toolkit = getToolkit();
        Dimension size = toolkit.getScreenSize();
        setLocation((size.width - getWidth())/2, (size.height - getHeight())/2);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
        JPanel panel = new JPanel();
        getContentPane().add(panel);
 
        panel.setLayout(null);
        panel.setToolTipText("A Panel container");
 
        JButton button = new JButton("Button");
        button.setBounds(100, 60, 80, 30);
        button.setToolTipText("A button component");
 
        panel.add(button);
 
    }
 
    public static void main(String[] args) {
 
        Tooltip tooltip = new Tooltip();
        tooltip.setVisible(true);
 
    }
}

В этом примере мы настроили всплывающую подсказку (tooltip) для панели и кнопки.

 panel.setToolTipText("A Panel container");

Для установки текста всплывающей подсказки мы использовали метод setTooltipText().

center