Swing完整实例JTree右键菜单可拖拽+JTable可翻页列中含有按钮隐藏列.docx
《Swing完整实例JTree右键菜单可拖拽+JTable可翻页列中含有按钮隐藏列.docx》由会员分享,可在线阅读,更多相关《Swing完整实例JTree右键菜单可拖拽+JTable可翻页列中含有按钮隐藏列.docx(31页珍藏版)》请在冰豆网上搜索。
Swing完整实例JTree右键菜单可拖拽+JTable可翻页列中含有按钮隐藏列
首先来看一下展示界面,JTree的特点有:
节点可拖拽,根据输入生成目录,右键有菜单,点击触发事件等
JTable的特点有:
含有隐藏列,可以进行翻页,列中含有下载按钮等
在来看一下代码吧,基本代码由Eclipse上的WindowBuilder进行拖拽式产生的,所以看起来有点乱,不过没事
在使用WindowBuilder的时候要画JTree和JTable时要注意,这两个有几个共同点,必须放到JScrollPanel中,因为这两个控件的内容长度会发生突然变化,所以要使用JScrollPanel。
BTW:
如果要使用WindowBuidler,除了在Eclipse上安装插件,最方便的方法是直接下载含有该插件的Eclipse版本:
http:
//www.eclipse.org/downloads/packages/eclipse-ide-java-developers/keplerr
packagetest;
importjava.awt.BorderLayout;
importjava.awt.Component;
importjava.awt.EventQueue;
importjava.awt.GridBagConstraints;
importjava.awt.GridBagLayout;
importjava.awt.Insets;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.util.List;
importjavax.swing.AbstractAction;
importjavax.swing.DefaultCellEditor;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JPopupMenu;
importjavax.swing.JScrollPane;
importjavax.swing.JTabbedPane;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.swing.JTree;
importjavax.swing.border.EmptyBorder;
importjavax.swing.table.AbstractTableModel;
importjavax.swing.table.TableCellRenderer;
importjavax.swing.tree.DefaultMutableTreeNode;
publicclassInnerDocsMgtextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
privateJPanelcontentPane;
privateJTabletable;
privateJTreetree;
privateJLabelcurrentDirLabel;
privateJLabeltotalFilesNumLabel;
privateListdocFils;
privatefinalintmaxFilesAPage=50;
privateJLabelcurPageLabel;
privateintcurPageNum=0;
/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
InnerDocsMgtframe=newInnerDocsMgt();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*Createtheframe.
*/
publicInnerDocsMgt(){
setTitle("\u5185\u90E8\u8D44\u6599\u7BA1\u7406");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,450,300);
this.setSize(800,600);
contentPane=newJPanel();
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setLayout(newBorderLayout(0,0));
setContentPane(contentPane);
JPanelpanel=newJPanel();
contentPane.add(panel,BorderLayout.WEST);
GridBagLayoutgbl_panel=newGridBagLayout();
gbl_panel.columnWidths=newint[]{54,0,0,0,0,0,0,0};
gbl_panel.rowHeights=newint[]{31,0,0};
gbl_panel.columnWeights=newdouble[]{1.0,0.0,0.0,0.0,0.0,0.0,
0.0,Double.MIN_VALUE};
gbl_panel.rowWeights=newdouble[]{0.0,1.0,Double.MIN_VALUE};
panel.setLayout(gbl_panel);
JLabellblNewLabel=newJLabel(
"\u5185\u90E8\u8D44\u6599\u76EE\u5F55\u5217\u8868");
GridBagConstraintsgbc_lblNewLabel=newGridBagConstraints();
gbc_lblNewLabel.gridwidth=5;
gbc_lblNewLabel.insets=newInsets(0,0,5,5);
gbc_lblNewLabel.gridx=0;
gbc_lblNewLabel.gridy=0;
panel.add(lblNewLabel,gbc_lblNewLabel);
JButtonbutton_4=newJButton("\u4FDD\u5B58\u76EE\u5F55\u64CD\u4F5C");
GridBagConstraintsgbc_button_4=newGridBagConstraints();
gbc_button_4.insets=newInsets(0,0,5,5);
gbc_button_4.gridx=5;
gbc_button_4.gridy=0;
panel.add(button_4,gbc_button_4);
JScrollPanescrollPane=newJScrollPane();
GridBagConstraintsgbc_scrollPane=newGridBagConstraints();
gbc_scrollPane.gridwidth=7;
gbc_scrollPane.fill=GridBagConstraints.BOTH;
gbc_scrollPane.gridx=0;
gbc_scrollPane.gridy=1;
panel.add(scrollPane,gbc_scrollPane);
DefaultMutableTreeNodetop=newDefaultMutableTreeNode("/");
createNodes(top);
tree=newJTree(top);
scrollPane.setViewportView(tree);
tree.setEditable(true);
tree.setDragEnabled(true);
this.setPopupMenu();
try{
tree.setTransferHandler(newDocsTreeTransferHanlder());
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
JPanelpanel_1=newJPanel();
contentPane.add(panel_1,BorderLayout.CENTER);
GridBagLayoutgbl_panel_1=newGridBagLayout();
gbl_panel_1.columnWidths=newint[]{708,0};
gbl_panel_1.rowHeights=newint[]{556,0};
gbl_panel_1.columnWeights=newdouble[]{1.0,Double.MIN_VALUE};
gbl_panel_1.rowWeights=newdouble[]{1.0,Double.MIN_VALUE};
panel_1.setLayout(gbl_panel_1);
JTabbedPanetabbedPane=newJTabbedPane(JTabbedPane.TOP);
GridBagConstraintsgbc_tabbedPane=newGridBagConstraints();
gbc_tabbedPane.fill=GridBagConstraints.BOTH;
gbc_tabbedPane.gridx=0;
gbc_tabbedPane.gridy=0;
panel_1.add(tabbedPane,gbc_tabbedPane);
JPanelpanel_2=newJPanel();
tabbedPane.addTab("\u6587\u4EF6\u4E0E\u76EE\u5F55\u7BA1\u7406",null,
panel_2,null);
GridBagLayoutgbl_panel_2=newGridBagLayout();
gbl_panel_2.columnWidths=newint[]{166,59,0,0,0,0,0};
gbl_panel_2.rowHeights=newint[]{30,0,49,0,0,0};
gbl_panel_2.columnWeights=newdouble[]{1.0,0.0,0.0,0.0,0.0,
0.0,Double.MIN_VALUE};
gbl_panel_2.rowWeights=newdouble[]{0.0,0.0,1.0,0.0,0.0,
Double.MIN_VALUE};
panel_2.setLayout(gbl_panel_2);
currentDirLabel=newJLabel(
"\u5F53\u524D\u76EE\u5F55\uFF1Aone->two->three");
GridBagConstraintsgbc_lblonetwothree=newGridBagConstraints();
gbc_lblonetwothree.gridwidth=6;
gbc_lblonetwothree.anchor=GridBagConstraints.WEST;
gbc_lblonetwothree.insets=newInsets(0,0,5,0);
gbc_lblonetwothree.gridx=0;
gbc_lblonetwothree.gridy=0;
panel_2.add(currentDirLabel,gbc_lblonetwothree);
JButtonbutton_3=newJButton("\u5168\u9009/\u5168\u4E0D\u9009");
GridBagConstraintsgbc_button_3=newGridBagConstraints();
gbc_button_3.insets=newInsets(0,0,5,5);
gbc_button_3.gridx=3;
gbc_button_3.gridy=1;
panel_2.add(button_3,gbc_button_3);
JButtonbutton=newJButton("\u5220\u9664");
GridBagConstraintsgbc_button=newGridBagConstraints();
gbc_button.insets=newInsets(0,0,5,5);
gbc_button.gridx=4;
gbc_button.gridy=1;
panel_2.add(button,gbc_button);
JButtonbutton_1=newJButton("\u79FB\u52A8\u5230");
button_1.setToolTipText("\u8BF7\u5148\u9009\u62E9\u8981\u79FB\u52A8\u7684\u6587\u4EF6\uFF0C\u7136\u540E\u518D\u9009\u62E9\u4E00\u4E2A\u5DE6\u4FA7\u76EE\u5F55");
GridBagConstraintsgbc_button_1=newGridBagConstraints();
gbc_button_1.insets=newInsets(0,0,5,0);
gbc_button_1.gridx=5;
gbc_button_1.gridy=1;
panel_2.add(button_1,gbc_button_1);
JScrollPanescrollPane_1=newJScrollPane();
GridBagConstraintsgbc_scrollPane_1=newGridBagConstraints();
gbc_scrollPane_1.gridwidth=6;
gbc_scrollPane_1.insets=newInsets(0,0,5,0);
gbc_scrollPane_1.fill=GridBagConstraints.BOTH;
gbc_scrollPane_1.gridx=0;
gbc_scrollPane_1.gridy=2;
panel_2.add(scrollPane_1,gbc_scrollPane_1);
String[]headNames=newString[]{"\u9009\u62E9",
"\u6587\u4EF6\u540D","\u5927\u5C0F\uFF08KB\uFF09",
"\u6587\u4EF6\u65E5\u671F","\u4F5C\u8005","","\u4E0B\u8F7D"};
Object[][]tableDatas=newObject[50][7];
for(inti=0;i<50;i++){
for(intj=0;j<7;j++){
tableDatas[i][j]=null;
}
}
table=newJTable(newDocsTableModel(headNames,tableDatas));
table.getColumnModel().getColumn(0)
.setCellEditor(table.getDefaultEditor(Boolean.class));
table.getColumnModel().getColumn(0)
.setCellRenderer(table.getDefaultRenderer(Boolean.class));
table.getColumnModel().getColumn(0).setPreferredWidth(38);
table.getColumnModel().getColumn
(1).setPreferredWidth(206);
table.getColumnModel().getColumn
(2).setPreferredWidth(53);
table.getColumnModel().getColumn(3).setPreferredWidth(134);
table.getColumnModel().getColumn(4).setPreferredWidth(58);
//hidethe5thcolumn,itcontansthefilepath
table.getTableHeader().getColumnModel().getColumn(5).setMaxWidth(0);//hide
table.getTableHeader().getColumnModel().getColumn(5).setMinWidth(0);//hide
table.getTableHeader().getColumnModel().getColumn(5)
.setPreferredWidth(0);
table.getTableHeader().getColumnModel().getColumn(5).setWidth(0);
table.getColumnModel().getColumn(6)
.setCellRenderer(newButtonCellRenderer());
table.getColumnModel().getColumn(6)
.setCellEditor(newButtonCellEditor(table));
scrollPane_1.setViewportView(table);
totalFilesNumLabel=newJLabel("\u6587\u4EF6\u603B\u6570\uFF1A0");
GridBagConstraintsgbc_totalFilesNumLabel=newGridBagConstraints();
gbc_totalFilesNumLabel.anchor=GridBagConstraints.WEST;
gbc_totalFilesNumLabel.insets=newInsets(0,0,0,5);
gbc_totalFilesNumLabel.gridx=0;
gbc_totalFilesNumLabel.gridy=4;
panel_2.add(totalFilesNumLabel,gbc_totalFilesNumLabel);
curPageLabel=newJLabel(
"\u5F53\u524D\u9875\u6570\uFF1A0|\u603B\u9875\u6570\uFF1A0");
GridBagConstraintsgbc_curPageLabel=newGridBagConstraints();
gbc_curPageLabel.gridwidth=2;
gbc_curPageLabel.insets=newInsets(0,0,0,5);
gbc_curPageLabel.gridx=2;
gbc_curPageLabel.gridy=4;
panel_2.add(curPageLabel,gbc_curPageLabel);
JButtonbtnNewButton=newJButton("\u4E0A\u4E00\u9875");
btnNewButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
prePage();
}
});
GridBagConstraintsgbc_btnNewButton=newGridBagConstraints();
gbc_btnNewButton.insets=newInsets(0,0,0,5);
gbc_btnNewButton.gridx=4;
gbc_btnNewButton.gridy=4;
panel_2.add(btnNewButton,gbc_btnNewButton);
JButtonbutton_2=newJButton("\u4E0B\u4E00\u9875");
button_2.addActionListener(newActionListener(){