
Шустрый

Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007
Репутация: нет Всего: 3
|
Ребята помогите снова, наваял я программку, но не могу заставить работать кнопки на toolbare. тоесть они отображаются, но по нажатию на них ничего не проиходит. Пожалуйста не пугайтесь количества строк. Скорее всего не работает условие нажатия на кнопку, хотя ошибок при компиляции нет. В классе main я пометил коментарием ту функцию которая не работает Пожалуйста пмогите, а то я уже 2 дня не могу заставить эти кнопки работать Вот класс с кнопками на toolbar'e | Код |
import java.awt.*; import javax.swing.*; import java.awt.event.*;
public class MainToolbar extends JToolBar { /** * */ private static final long serialVersionUID = 5017360832813503934L; JButton btnRename = new JButton("F2 Rename"); JButton btnCopy = new JButton("F5 Copy"); JButton btnMove = new JButton("F6 Move"); JButton btnMakeDir = new JButton("F7 MakeDir"); JButton btnDelete = new JButton("F8 Delete"); /** Creates a new instance of MainToolbar */ public MainToolbar() { super(); setLayout(new GridLayout(1, 5)); btnRename.setActionCommand("actRename"); btnCopy.setActionCommand("actCopy"); btnMove.setActionCommand("actMove"); btnMakeDir.setActionCommand("actMakeDir"); btnDelete.setActionCommand("actDelete"); add(btnRename); add(btnCopy); add(btnMove); add(btnMakeDir); add(btnDelete); } public void addActionListener(ActionListener al) { btnRename.addActionListener(al); btnCopy.addActionListener(al); btnMove.addActionListener(al); btnMakeDir.addActionListener(al); btnDelete.addActionListener(al); } }
|
А вот здесь класс с main в котором оно должно работать. | Код | import util.*; import javax.swing.*;
import java.awt.event.*; import java.awt.*; //import javax.swing.event.*; import javax.swing.table.*; import java.io.*; //import java.util.*; //import javax.swing.border.*; import javax.imageio.ImageIO;
public class FileManager extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 3435116427122927124L; private JLabel leftPath = new JLabel("---"); private JLabel rightPath = new JLabel("---"); private CustomTable leftTable; private CustomTable rightTable; private JComboBox leftRoots; // private JComboBox rightRoots; private SystemTray systemTray = SystemTray.getSystemTray();//1 private TrayIcon trayIcon; * @throws IOException */ public FileManager() throws IOException { JFrame frame = new JFrame("nag"); frame.setUndecorated(false); JLabel lbl1 = new JLabel("yafm"); lbl1.setOpaque(true); lbl1.setBackground(new Color(250, 220, 80)); lbl1.setForeground(Color.RED); lbl1.setHorizontalAlignment(JLabel.CENTER); lbl1.setVerticalAlignment(JLabel.CENTER); lbl1.setFont(new Font("Arial", Font.BOLD, 36)); JLabel lbl2 = new JLabel("loading..."); lbl2.setOpaque(true); lbl2.setBackground(Color.WHITE); lbl2.setForeground(Color.BLUE); lbl2.setVerticalAlignment(JLabel.BOTTOM); lbl2.setHorizontalAlignment(JLabel.CENTER); JProgressBar progressbar = new JProgressBar(1, 44); progressbar.setForeground(new Color(120, 50, 200)); Container preCont = frame.getContentPane(); preCont.setLayout(new BorderLayout()); JPanel jp = new JPanel(); jp.setLayout(new BorderLayout()); jp.add(lbl1, BorderLayout.CENTER); jp.add(lbl2, BorderLayout.SOUTH); preCont.add(jp, BorderLayout.CENTER); preCont.add(progressbar, BorderLayout.SOUTH); frame.setSize(new Dimension(300, 200)); frame.setResizable(false); frame.setLocationRelativeTo(this); frame.setVisible(true); progressbar.setValue(1); leftRoots = new JComboBox(new RootsModel()); progressbar.setValue(2); leftRoots.addItemListener(new RootsListener()); progressbar.setValue(3); rightRoots = new JComboBox(new RootsModel()); progressbar.setValue(4); rightRoots.addItemListener(new RootsListener()); progressbar.setValue(5); FSTableModel leftModel = new FSTableModel(new File("/")); progressbar.setValue(6); leftTable = new CustomTable(new TableSorter(leftModel)); progressbar.setValue(7); FSTableModel rightModel = new FSTableModel(new File("/")); progressbar.setValue(8); rightTable = new CustomTable(new TableSorter(rightModel)); progressbar.setValue(9); leftTable.setName("leftTable"); progressbar.setValue(10); rightTable.setName("rightTable"); progressbar.setValue(11); Container con = getContentPane(); progressbar.setValue(12); con.setLayout(new BorderLayout()); progressbar.setValue(13); JPanel topPane = new JPanel(); progressbar.setValue(14); topPane.setLayout(new BorderLayout()); progressbar.setValue(15); MainToolbar mt = new MainToolbar(); progressbar.setValue(16); mt.addActionListener(this); progressbar.setValue(17); topPane.add(mt); progressbar.setValue(18); JPanel leftPane = new JPanel(); progressbar.setValue(19); leftPane.setLayout(new BorderLayout()); progressbar.setValue(20); JPanel leftTopPane = new JPanel(); progressbar.setValue(21); leftTopPane.setLayout(new BorderLayout()); progressbar.setValue(22); leftTopPane.add(leftRoots, BorderLayout.WEST); progressbar.setValue(23); leftTopPane.add(leftPath, BorderLayout.CENTER); progressbar.setValue(24); leftPane.add(leftTopPane, BorderLayout.NORTH); progressbar.setValue(25); leftPane.add(new JScrollPane(leftTable), BorderLayout.CENTER); progressbar.setValue(26); JPanel rightPane = new JPanel(); progressbar.setValue(27); rightPane.setLayout(new BorderLayout()); progressbar.setValue(28); JPanel rightTopPane = new JPanel(); progressbar.setValue(29); rightTopPane.setLayout(new BorderLayout()); progressbar.setValue(30); rightTopPane.add(rightRoots, BorderLayout.WEST); progressbar.setValue(31); rightTopPane.add(rightPath, BorderLayout.CENTER); progressbar.setValue(32); rightPane.add(rightTopPane, BorderLayout.NORTH); progressbar.setValue(33); rightPane.add(new JScrollPane(rightTable), BorderLayout.CENTER); progressbar.setValue(34); JPanel bottomPane = new JPanel(); progressbar.setValue(35); bottomPane.setLayout(new BorderLayout()); progressbar.setValue(36); JSplitPane middlePane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPane, rightPane); progressbar.setValue(37); middlePane.setOneTouchExpandable(true); progressbar.setValue(38); con.add(topPane, BorderLayout.SOUTH); trayIcon = new TrayIcon(ImageIO.read(new File("ico.gif")), "текст тут");
trayIcon.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(true); setState(JFrame.NORMAL); removeTrayIcon(); } }); addWindowStateListener(new WindowStateListener() { public void windowStateChanged(WindowEvent e) { if(e.getNewState() == JFrame.ICONIFIED) { setVisible(false); addTrayIcon(); } } }); progressbar.setValue(39); con.add(middlePane, BorderLayout.CENTER); progressbar.setValue(40); con.add(bottomPane, BorderLayout.NORTH); progressbar.setValue(41); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); progressbar.setValue(42); pack(); progressbar.setValue(43); Runnable runner = new FrameShower(this); progressbar.setValue(44); frame.dispose(); leftPath.setText(leftRoots.getSelectedItem().toString()); rightPath.setText(leftRoots.getSelectedItem().toString()); EventQueue.invokeLater(runner); this.setTitle("название"); this.setIconImage(Toolkit.getDefaultToolkit().createImage("ico.gif")); } /** * @param args the command line arguments */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); new FileManager();
} catch(Exception e) { } } ////////////////////////***************************************************************//////////////////////////// //////////////////////// Ошибка где-то здесь ////////////////////////////
//проблема в этом классе, ошибок нет, но работы он своей не делает public class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent al) { JTable activeTable = ((JTable)(al.getSource())); int[] selectedRows; selectedRows = activeTable.getSelectedRows(); File root = (File)(activeTable.getModel().getValueAt(0,-1)); File parent = root.getParentFile(); JLabel activePath; if (activeTable.getName().equals("leftTable")) activePath = leftPath; else activePath = rightPath;
JButton btn = (JButton)al.getSource(); if (al.getActionCommand().equals("actCopy") //это условие скорее всего не работает { File[] sourceFilesList; File targetPath = null; JTable targetTable = null; if (selectedRows != null) { if (activeTable.getName().equals("leftTable")) { targetTable = rightTable; } else { targetTable = leftTable; } targetPath = (File)(targetTable.getModel().getValueAt(0,-1)); sourceFilesList = new File[selectedRows.length]; for (int i = 0; i < selectedRows.length; i++) { sourceFilesList[i] = (File)(activeTable.getValueAt(selectedRows[i], 0)); } new FileCopy(sourceFilesList, targetPath, targetTable); } TableSorter ts = new TableSorter(new FSTableModel(targetPath)); targetTable.setModel(ts); ts.addMouseListenerToHeaderInTable(targetTable); ((CustomTable)targetTable).setTableRenderer(targetTable, new FSTableCellRenderer()); } } } ////////////////////////////////дальше всё работает
public class TableKeyListener implements KeyListener { //это класс где обрабатываются нажатия кнопок на клавиатуре он работает public void keyPressed(KeyEvent e) { JTable activeTable = ((JTable)(e.getSource())); int[] selectedRows; selectedRows = activeTable.getSelectedRows(); int keyCode = e.getKeyCode(); File root = (File)(activeTable.getModel().getValueAt(0,-1)); File parent = root.getParentFile(); JLabel activePath; if (activeTable.getName().equals("leftTable")) activePath = leftPath; else activePath = rightPath; if (keyCode == KeyEvent.VK_ENTER) { int selectedRow = activeTable.getSelectedRow(); if (selectedRow != -1) { Object mf = activeTable.getModel().getValueAt(selectedRow, 0); if (((MyFile)mf).isDirectory()) { TableSorter ts = new TableSorter(new FSTableModel((MyFile)mf)); activeTable.setModel(ts); ts.addMouseListenerToHeaderInTable(activeTable); ((CustomTable)activeTable).setTableRenderer(activeTable, new FSTableCellRenderer()); } else { Runtime r = Runtime.getRuntime(); try { r.exec(((MyFile)mf).getAbsolutePath()); } catch (IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); } } activePath.setText(((MyFile)mf).getAbsolutePath()); } } else if (keyCode == KeyEvent.VK_BACK_SPACE) { if (parent != null) { TableSorter ts = new TableSorter(new FSTableModel(new MyFile(parent))); activeTable.setModel(ts); ts.addMouseListenerToHeaderInTable(activeTable); ((CustomTable)activeTable).setTableRenderer(activeTable, new FSTableCellRenderer()); activePath.setText(parent.getAbsolutePath()); } } else if (keyCode == KeyEvent.VK_F5 ) { File[] sourceFilesList; File targetPath = null; JTable targetTable = null; if (selectedRows != null) { if (activeTable.getName().equals("leftTable")) { targetTable = rightTable; } else { targetTable = leftTable; } targetPath = (File)(targetTable.getModel().getValueAt(0,-1)); sourceFilesList = new File[selectedRows.length]; for (int i = 0; i < selectedRows.length; i++) { sourceFilesList[i] = (File)(activeTable.getValueAt(selectedRows[i], 0)); } new FileCopy(sourceFilesList, targetPath, targetTable); } TableSorter ts = new TableSorter(new FSTableModel(targetPath)); targetTable.setModel(ts); ts.addMouseListenerToHeaderInTable(targetTable); ((CustomTable)targetTable).setTableRenderer(targetTable, new FSTableCellRenderer()); } else if (keyCode == KeyEvent.VK_F6) { File[] sourceFilesList; File targetPath = null; JTable targetTable = null; if (selectedRows != null) { if (activeTable.getName().equals("leftTable")) { targetTable = rightTable; } else { targetTable = leftTable; } targetPath = (File)(targetTable.getModel().getValueAt(0,-1)); sourceFilesList = new File[selectedRows.length]; for (int i = 0; i < selectedRows.length; i++) { sourceFilesList[i] = (File)(activeTable.getValueAt(selectedRows[i], 0)); } new FileMove(sourceFilesList, targetPath, targetTable); } TableSorter ts = new TableSorter(new FSTableModel(targetPath)); targetTable.setModel(ts); ts.addMouseListenerToHeaderInTable(targetTable); ((CustomTable)targetTable).setTableRenderer(targetTable, new FSTableCellRenderer()); TableSorter ts2 = new TableSorter(new FSTableModel(root)); activeTable.setModel(ts2); ts2.addMouseListenerToHeaderInTable(activeTable); ((CustomTable)activeTable).setTableRenderer(activeTable, new FSTableCellRenderer()); } else if (keyCode == KeyEvent.VK_F2) { File[] sourceFilesList; //File targetPath; @SuppressWarnings("unused") JTable targetTable = null; if (selectedRows != null) { if (activeTable.getName().equals("leftTable")) { targetTable = rightTable; } else { targetTable = leftTable; } sourceFilesList = new File[selectedRows.length]; for (int i = 0; i < selectedRows.length; i++) { sourceFilesList[i] = (File)(activeTable.getValueAt(selectedRows[i], 0)); } new FileRename(sourceFilesList); } TableSorter ts = new TableSorter(new FSTableModel(root)); activeTable.setModel(ts); ts.addMouseListenerToHeaderInTable(activeTable); ((CustomTable)activeTable).setTableRenderer(activeTable, new FSTableCellRenderer()); } } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } } public class RootsListener implements ItemListener { JComboBox activeComboBox; public void itemStateChanged(ItemEvent e) { activeComboBox = (JComboBox)(e.getSource()); if (activeComboBox.equals(leftRoots)) { TableSorter ts = new TableSorter(new FSTableModel((File)(leftRoots.getSelectedItem()))); leftTable.setModel(ts); ts.addMouseListenerToHeaderInTable(leftTable); ((CustomTable)leftTable).setTableRenderer(leftTable, new FSTableCellRenderer()); leftPath.setText(leftRoots.getSelectedItem().toString());// war ("---") } else { TableSorter ts = new TableSorter(new FSTableModel((File)(rightRoots.getSelectedItem()))); rightTable.setModel(ts); ts.addMouseListenerToHeaderInTable(rightTable); ((CustomTable)rightTable).setTableRenderer(rightTable, new FSTableCellRenderer()); rightPath.setText(rightRoots.getSelectedItem().toString());} } public void keyReleased(KeyEvent e) { } public void keyPressed(KeyEvent e) { @SuppressWarnings("unused") JTable activeTable = ((JTable)(e.getSource()));//war so: JTable activeTable = ((JTable)(e.getSource())); int keyCode = e.getKeyCode(); if (keyCode == KeyEvent.VK_F9) { activeComboBox = (JComboBox)leftRoots; TableSorter ts = new TableSorter(new FSTableModel((File)(leftRoots.getSelectedItem()))); leftTable.setModel(ts); ts.addMouseListenerToHeaderInTable(leftTable); ((CustomTable)leftTable).setTableRenderer(leftTable, new FSTableCellRenderer()); leftPath.setText("---"); } } } public class CustomTable extends JTable { /** * */ private static final long serialVersionUID = 6784481691398140458L;
public void setTableRenderer(JTable table, TableCellRenderer tcr) { int columnCount = table.getColumnCount(); String columnName = ""; for (int i = 0; i < columnCount; i++) { columnName = table.getColumnName(i); table.getColumn(columnName).setCellRenderer(tcr); } } public CustomTable(TableSorter ts) { super(ts); ts.addMouseListenerToHeaderInTable(this); this.addKeyListener(new TableKeyListener()); this.setDoubleBuffered(true); this.setIntercellSpacing(new Dimension(1, 1)); this.setShowGrid(true); setTableRenderer(this, new FSTableCellRenderer()); } } public void actionPerformed(ActionEvent ae) { } private void removeTrayIcon() { systemTray.remove(trayIcon); }
private void addTrayIcon() { try { systemTray.add(trayIcon); } catch(AWTException ex) { ex.printStackTrace(); } } }
|
Это сообщение отредактировал(а) Warchief - 27.12.2007, 05:45
|