Тема исключений затрагивает большой материал, и по этому я разделить ее на две части, в первой мы говорили об исключении и его синтаксисе об этом вы можете почитать здесь. А вот сейчас мы поговорим во второй части нашей статьи, о типах исключений. Исключение и его подклассы используются для исключительных условий, что бы пользовательские программы […]
Рубрика: Java
Разберем вопрос отличие абстрактного класса от интерфейса.
Копаясь в интернете я до сих пор встречаю вопросы от пользователей в чем же отличия абстрактного класса от интерфейса. Как оказалось он до сих пор актуален среди работодатель, которые вовремя собеседования предлагают ответить на этот вопрос. При чем некоторые из них пытаются сбить столку начинающего программиста, дают код и предлагают объяснить в чем разница. Можете […]
Class JTextField
Здравствуйте дороги пользователи сайта java-soft, сегодня поговорим о классе JtexrField, так же приведем не сколько примеров по его использованию в своих приложениях. Для объявления класса используем:
1 |
JTextField textField= new JTextField(); |
Следующий пример показан JtexrField с заданным за ранее текстом.
1 |
JTextField textField = new JTextField("Hello World"); |
В следующем примере создан JtexrField с заранее заданным количеством столбцов.
1 |
JTextField textField = new JTextField(30); |
Хотел показать вам еще один пример ограничения или […]
Как проверить событие на значение lostfocus
Проблема возникает, когда происходит потеря фокуса на компоненте, gainedFocus который отправлен на следующий компонент в SystemEventQueue. Мы должны захватить это событие, и перенаправить внимания к предыдущему компоненту (если есть ошибки валидации). Мы не можем использовать инструментарий. getDefaultToolkit().getSystemEventQueue() напрямую, чтобы удалить событие gainedFocus из-за ограничений безопасности в Апплета. Это можно сделать с метод invokeLater класса метода […]
Всплывающее окно, прикрепленное к jtree
В этом статье я покажу вам как в java прикрепить контекстное меню к jtree.
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 |
import javax.swing.*; import javax.swing.tree.*; import java.awt.event.*; import java.awt.*; import java.util.*; public class TreeWithPopup extends JPanel { DefaultMutableTreeNode root, node1, node2, node3; public TreeWithPopup() { MyJTree tree; root = new DefaultMutableTreeNode("root", true); node1 = new DefaultMutableTreeNode("node 1", true); node2 = new DefaultMutableTreeNode("node 2" , true); node3 = new DefaultMutableTreeNode("node 3", true); root.add(node1); node1.add(node2); root.add(node3); setLayout(new BorderLayout()); tree = new MyJTree(root); add(new JScrollPane((JTree)tree),"Center"); } public Dimension getPreferredSize(){ return new Dimension(300, 300); } public static void main(String s[]){ JFrame frame = new JFrame("Tree With Popup"); TreeWithPopup panel = new TreeWithPopup(); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.setForeground(Color.black); frame.setBackground(Color.lightGray); frame.getContentPane().add(panel,"Center"); frame.setSize(panel.getPreferredSize()); frame.setVisible(true); frame.addWindowListener(new WindowCloser()); } } class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent e) { Window win = e.getWindow(); win.setVisible(false); System.exit(0); } } class MyJTree extends JTree implements ActionListener{ JPopupMenu popup; JMenuItem mi; MyJTree(DefaultMutableTreeNode dmtn) { super(dmtn); // define the popup popup = new JPopupMenu(); mi = new JMenuItem("Insert a children"); mi.addActionListener(this); mi.setActionCommand("insert"); popup.add(mi); mi = new JMenuItem("Remove this node"); mi.addActionListener(this); mi.setActionCommand("remove"); popup.add(mi); popup.setOpaque(true); popup.setLightWeightPopupEnabled(true); addMouseListener( new MouseAdapter() { public void mouseReleased( MouseEvent e ) { if ( e.isPopupTrigger()) { popup.show( (JComponent)e.getSource(), e.getX(), e.getY() ); } } } ); } public void actionPerformed(ActionEvent ae) { DefaultMutableTreeNode dmtn, node; TreePath path = this.getSelectionPath(); dmtn = (DefaultMutableTreeNode) path.getLastPathComponent(); if (ae.getActionCommand().equals("insert")) { node = new DefaultMutableTreeNode("children"); dmtn.add(node); // thanks to Yong Zhang for the tip for refreshing the tree structure. ((DefaultTreeModel )this.getModel()).nodeStructureChanged((TreeNode)dmtn); } if (ae.getActionCommand().equals("remove")) { node = (DefaultMutableTreeNode)dmtn.getParent(); // Bug fix by essam int nodeIndex=node.getIndex(dmtn); // объявим целочисленный, чтобы удерживать выбранный индекс узлов dmtn.removeAllChildren(); // удалить всех детей выбранного узла node.remove(nodeIndex); // удалить выбранный узел, сохранить своих братьев и сестер ((DefaultTreeModel )this.getModel()).nodeStructureChanged((TreeNode)dmtn); } } } |