В этой статье будет подробно рассмотрен пример отправки и приема писем и реализация почтового клиента написанного на java.. Вам понадобится javamail API для компиляции этого примера. Вы можете скачать его здесь. Пример содержит следующие файлы/классы: EmailClient: основной класс для клиентского приложения электронной почты ConnectDialog: этот класс отображает диалоговое окно для ввода электронной почты сервер подключения. […]
Рубрика: Java
Что такое двойная буферизация Java
Двойная буферизация это процесс построения графика в внеэкранный буфер изображения, а затем скопировать содержимое буфера на экран одновременно все сразу. Для сложной графики, с помощью двойной буферизации позволяет уменьшить мерцание. Swing автоматически поддерживает двойную буферизацию для всех его компонентов. Чтобы включить ее, достаточно просто вызвать setDoubleBuffered() метод (наследуется от JComponent), чтобы установить свойство достаточно присвоить […]
Как заблокировать мышь и ключевых событий в приложении
Java на базе Swing имеет метод реализации блокирование мыши и ключевые события в описание. Этот решение использует для блокировки мыши и ключевые события. Он может быть полезен для разработчиков, которые хотят, чтобы пользователи использовать приложение с ограниченным возможностями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GlassExample extends JFrame { JPanel glass = new JPanel(new GridLayout(0, 1)); // добавить метку, чтобы попалось в ловушку в активном окне JLabel padding = new JLabel(); JProgressBar waiter = new JProgressBar(0, 100); Timer timer; public GlassExample() { super("GlassPane Demo"); setSize(500, 300); setDefaultCloseOperation(EXIT_ON_CLOSE); // Вызывать сообщений и прогресс-бар JPanel controlPane = new JPanel(new GridLayout(2,1)); controlPane.setOpaque(false); controlPane.add(new JLabel("Please wait...")); controlPane.add(waiter); glass.setOpaque(false); glass.add(padding); glass.add(new JLabel()); glass.add(controlPane); glass.add(new JLabel()); glass.add(new JLabel()); // ловушка мыши и ключевые события. Могут обеспечить разумный // ключ обработчик, если вы хотели, чтобы позволить такие вещи, как нажатие клавиши // что бы отменить длительную операцию. glass.addMouseListener(new MouseAdapter() {}); glass.addMouseMotionListener(new MouseMotionAdapter() {}); glass.addKeyListener(new KeyAdapter() {}); padding.setNextFocusableComponent(padding); // 1.3 setGlassPane(glass); JPanel mainPane = new JPanel(); mainPane.setBackground(Color.white); JButton redB = new JButton("Red"); JButton blueB = new JButton("Blue"); JButton greenB = new JButton("Green"); mainPane.add(redB); mainPane.add(greenB); mainPane.add(blueB); mainPane.add(new JLabel(new ImageIcon("java-tip.gif"))); // убидится что фокус не оптерян PopupDebugger pd = new PopupDebugger(this); redB.addActionListener(pd); greenB.addActionListener(pd); blueB.addActionListener(pd); // Теперь установим несколько кнопок и изображений для основного приложения JButton startB = new JButton("Start the big operation!"); startB.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent A) { glass.setVisible(true); padding.requestFocus(); // required to trap key events startTimer(); } }); Container contentPane = getContentPane(); contentPane.add(mainPane, BorderLayout.CENTER); contentPane.add(startB, BorderLayout.SOUTH); } // Прикрепить всплывающее окно отладчика для основного приложения кнопками, так что вы // видеть эффект на // progress bar public void startTimer() { if (timer == null) { timer = new Timer(1000, new ActionListener() { int progress = 0; public void actionPerformed(ActionEvent A) { progress += 10; waiter.setValue(progress); // Быстрый способ для запуска 10-секундный таймер и обновление // прогресс-бар if (progress >= 100) { progress = 0; timer.stop(); glass.setVisible(false); waiter.setValue(0); } } }); } if (timer.isRunning()) { timer.stop(); } timer.start(); } public class PopupDebugger implements ActionListener { private JFrame parent; public PopupDebugger(JFrame f) { parent = f; } public void actionPerformed(ActionEvent ae) { JOptionPane.showMessageDialog(parent, ae.getActionCommand()); } } public static void main(String[] args) { GlassExample ge = new GlassExample(); ge.setVisible(true); } } |
Делаем заставку в своем приложении
Часто у пользователей встает вопрос о том как сделать заставку в своем приложении, что бы оно смотрелось покрасивее и интереснее.В java на базе Swing имеется метод реализации собственных заставки. Это простое приложение, чтобы показать изображение, в центре экрана в течение времени, заданного в конструкторе. Этот класс включает в себя основной main() метод, чтобы проверить заставку, […]
Как создать редактируемый combobox, который включает в себя текст и значки
Рассмотрим пример в java на базе Swing создания редактируемый combobox, который включают в себя как текст и так и иконки. Верхушка демонстрирует причудливый пример jcombobox с настраиваемой визуализацией и редактором. Пользовательское средство визуализации и редактор используется для отображения списка объектов jlabel он и включать в себя как текст и иконки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class EditableComboBox extends JPanel { private BookEntry books[] = { new BookEntry("Ant: The Definitive Guide", "covers/ant.gif"), new BookEntry("Database Programming with JDBC and Java", "covers/jdbc.gif"), new BookEntry("Developing Java Beans", "covers/beans.gif"), new BookEntry("Developing JSP Custom Tag Libraries", "covers/jsptl.gif"), new BookEntry("Java 2D Graphics", "covers/java2d.gif"), new BookEntry("Java and XML", "covers/jxml.gif"), new BookEntry("Java and XSLT", "covers/jxslt.gif"), new BookEntry("Java and SOAP", "covers/jsoap.gif"), new BookEntry("Java and XML Data Binding", "covers/jxmldb.gif"), new BookEntry("Java Cookbook", "covers/jcook.gif"), new BookEntry("Java Cryptography", "covers/jcrypto.gif"), new BookEntry("Java Distributed Computing", "covers/jdist.gif"), new BookEntry("Java I/O", "covers/javaio.gif"), new BookEntry("Java in a Nutshell", "covers/javanut.gif"), new BookEntry("Java Management Extensions", "covers/jmx.gif"), new BookEntry("Java Message Service", "covers/jms.gif"), new BookEntry("Java Network Programming", "covers/jnetp.gif"), new BookEntry("Java Performance Tuning", "covers/jperf.gif"), new BookEntry("Java RMI", "covers/jrmi.gif"), new BookEntry("Java Security", "covers/jsec.gif"), new BookEntry("JavaServer Pages", "covers/jsp.gif"), new BookEntry("Java Servlet Programming", "covers/servlet.gif"), new BookEntry("Java Swing", "covers/swing.gif"), new BookEntry("Java Threads", "covers/jthread.gif"), new BookEntry("Java Web Services", "covers/jws.gif"), new BookEntry("Learning Java", "covers/learnj.gif") }; Map bookMap = new HashMap(); public EditableComboBox() { // Build a mapping from book titles to their entries for (int i = 0 ; i < books.length; i++) { bookMap.put(books[i].getTitle(), books[i]); } setLayout(new BorderLayout()); JComboBox bookCombo = new JComboBox(books); bookCombo.setEditable(true); bookCombo.setEditor( new ComboBoxEditorExample(bookMap, books[0])); bookCombo.setMaximumRowCount(4); bookCombo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("You chose " + ( (JComboBox)e.getSource()).getSelectedItem() + "!"); } }); bookCombo.setActionCommand("Hello"); add(bookCombo, BorderLayout.CENTER); } public static void main(String s[]) { JFrame frame = new JFrame("Combo Box Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new EditableComboBox()); frame.pack(); frame.setVisible(true); } } |