Liny_@NotePad

沉迷ACG中

代码库v0.1 ^^

昨天开始写的~终于差不多了,贴个截图:

试用JTree中。。

无聊ing,于是写一个代码库用来自己存代码。。

希望按项目保存,因此用树形列表显示。。效果如图:

结果中间出现了许多问题。。于是贴下解决方案。

Swing:重置按钮的监听器实现

rt。。写了一个类实现ActionListener,actionPerformed时递归遍历容器中的所有组件 如果是可输入组件则清除内容,可选择组件则清除选择。

  1. import java.awt.Component;
  2. import java.awt.Container;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5.  
  6. import javax.swing.JComboBox;
  7. import javax.swing.JList;
  8. import javax.swing.JTextArea;
  9. import javax.swing.JTextField;
  10.  
  11. /**
  12. * <p>Title: 重置按钮监听器</p>
  13. *
  14. * <p>Description: 单击重置按钮 清空窗体中数据</p>
  15. *
  16. * @author YOYO
  17. *
  18. * @create 2009-8-8
  19. *
  20. * @修改历史
  21. * <li>版本号 修改日期 修改人 修改说明
  22. * <li>
  23. * <li>
  24. */
  25. public class SuperResetButtonAction implements ActionListener {
  26.        
  27.         private Container container;
  28.        
  29.         public SuperResetButtonAction(Container container) {
  30.                 this.container = container;
  31.         }
  32.        
  33.         /**
  34.          * 清空容器内容
  35.          * @param parent
  36.          */
  37.         private void clear(Container parent) {
  38.                 for(Component component: parent.getComponents()){
  39.                         if(component instanceof Container) {
  40.                                 clear((Container) component);
  41.                         }
  42.                         if(component instanceof JTextField) {
  43.                                 ((JTextField) component).setText("");
  44.                         }
  45.                         if(component instanceof JTextArea) {
  46.                                 ((JTextArea) component).setText("");
  47.                         }
  48.                         if(component instanceof JComboBox) {
  49.                                 if(((JComboBox) component).getItemCount()>0) {
  50.                                         ((JComboBox) component).setSelectedIndex(0);
  51.                                 }
  52.                         }
  53.                         if(component instanceof JList) {
  54.                                 ((JList)component).clearSelection();
  55.                         }
  56.                 }
  57.         }
  58.  
  59.         public void actionPerformed(ActionEvent arg0) {
  60.                 clear(container);
  61.         }
  62.  
  63. }

Swing设置默认焦点

 假设要设定默认焦点为defaultButton,则初始化窗体时

  1. this.addWindowListener(new java.awt.event.WindowAdapter() {
  2.             public void windowOpened(java.awt.event.WindowEvent evt) {
  3.                 defaultButton.requestFocus();
  4.             }
  5. });

即可。

为面板(JPanel)添加标题

需求:用实线把各个面板圈起来,然后把面板的名字写在圈圈的左上角。

示例:

Swing事件源通常可能触发事件及对应事件监听器

事件源

事件对象

事件监听器

JFrame MouseEvent
WindowEvent
MouseEventListener
WindowEventListener
AbstractButton
(JButton, JToggleButton,
  JCheckBox, JRadioButton)
ActionEvent
ItemEvent
ActionListener
ItemListener
JTextField
JPasswordField
ActionEvent
UndoableEvent
ActionListener
UndoableListener
JTextArea CareEvent
InputMethodEvent
CareListener
InputMethodEventListener
JTextPane
JEditorPane
CareEvent
DocumentEvent
UndoableEvent
HyperlinkEvent
CareListener
DocumentListener
UndoableListener
HyperlinkListener
JComboBox ActionEvent
ItemEvent
ActionListener
ItemListener
JList ListSelectionEvent
ListDataEvent
ListSelectionListener
ListDataListener
JFileChooser ActionEvent ActionListener
JMenuItem ActionEvent
ChangeEvent
ItemEvent
MenuKeyEvent
MenuDragMouseEvent
ActionListener
ChangeListener
ItemListener
MenuKeyListener
MenuDragMouseListener
JMenu MenuEvent MenuListener
JPopupMenu PopupMenuEvent PopupMenuListener
JProgressBar ChangeEvent ChangeListener
JSlider ChangeEvent ChangeListener
JScrollBar AdjustmentEvent AdjustmentListener
JTable ListSelectionEvent
TableModelEvent
ListSelectionListener
TableModelListener
JTabbedPane ChangeEvent ChangeListener
JTree TreeSelectionEvent
TreeExpansionEvent
TreeSelectionListener
TreeExpansionListener
JTimer ActionEvent ActionListener

该表列出了Swing事件源通常可能触的发事件及对应的事件监听器,它们也位于java.awt.event包和javax.swing.event包中。