Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] кнопки в Toolbare не работают, (не проходите мимо пож.) 
V
    Опции темы
Warchief
  Дата 27.12.2007, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 27.12.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Warchief, 
1) Такое лучше постить в Java, а не сюда. У вас есть код и проблема, а не просто задание smile
2) Примеры лучше давать рабочие, чтобы можно было запустить и увидеть проблему. А у вас в главном классе столько еще левых классов, что запустить мне его никак не удалось.
3)
Проблема может быть в этой строчке:
Код

mt.addActionListener(this);

вы добавляете к тулбару с кнопками обьект FileManager, хотя у него actionPerformed() или не реализован, или пустой.


--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 30.12.2007, 04:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Kangaroo, 

Спасибо вам, хоть кто-то откликнулся, я так и не поборол проблемму :(

Ребят, помогите пожалуйста!
Вот выкладываю всю програмку полностью, посмотрите пожалуйста если не сложно.

П.С. Товарищи модераторы, перенесите тему если посчитаете нужным в более подходящий раздел.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  fileman1.rar 27,87 Kb
PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 2.1.2008, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Warchief, что ж вы мой совет проигнорировали?
Цитата(Kangaroo @  27.12.2007,  09:00 Найти цитируемый пост)
3)
Проблема может быть в этой строчке:
mt.addActionListener(this);
вы добавляете к тулбару с кнопками обьект FileManager, хотя у него actionPerformed() или не реализован, или пустой. 


Надо было только изменить код FileManager'a вот так:
Код

//mt.addActionListener(this);
mt.addActionListener(new ButtonListener());




--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 2.1.2008, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Kangaroo, 

Спасибо большое, забыл отписаться полностью я так пробовал, кнопки начинают работать, но 
в консоль печатается следующая ошибка: 

Цитата
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)


я думаю не работает эта строка 
Код

if (al.getActionCommand().equals("actCopy")) 


хотя в классе MainToolbar выполнены присвоения типа btnCopy.setActionCommand("actCopy");
если проверять нажатия таким способом
Код

 if (btn == btnCopy)

то компайлер не находит кнопку btnCopy.

[/code]



Это сообщение отредактировал(а) Warchief - 2.1.2008, 03:46
PM MAIL ICQ Skype   Вверх
LSD
Дата 8.1.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Цитата(Warchief @  2.1.2008,  03:37 Найти цитируемый пост)
Спасибо большое, забыл отписаться полностью я так пробовал, кнопки начинают работать, но 
в консоль печатается следующая ошибка:

Ты вырезал само сообщение об ошибке smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Warchief
Дата 9.1.2008, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



LSD, 


Ты прав smile 

вот такая вот ошибка:

Цитата
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.Button cannot be cast to javax.swing.JTable

PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 9.1.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Warchief, первая строчка actionPerformed:
Код

JTable activeTable = ((JTable)(al.getSource()));

Пользователь нажимает на кнопку, поэтому al.getSource() - это Button. А вы пытаетесь привести тип от Button'a к JTable.


--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 9.1.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Цитата
Пользователь нажимает на кнопку, поэтому al.getSource() - это Button. А вы пытаетесь привести тип от Button'a к JTable.


ок, понял, но как мне тогда сделать, чтобы при нажатии на btnCopy, al.getSource() выполнялся бы в JTable? 
PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 9.1.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(Warchief @  9.1.2008,  10:33 Найти цитируемый пост)
 чтобы при нажатии на btnCopy, al.getSource() выполнялся бы в JTable? 

Не понял. Объясни поподробней.


--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 9.1.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



ну поидее должно происходить следующее:

я нажимаю на одну из кнопок на toolbar'e(на пример эту самую btnCopy). при нажатии на эту кнопку должно произойти копирование, в этот момент выделеных, файлов одной из панелей.
именно для этого и нужна строка 
Код
Table activeTable = ((JTable)(al.getSource()));
 - тоесть она получает активную в данный момент JTable. 


почему-то для shortcuto'в с клавиатуры это прокатывает а для нажатий button'ов нет  smile 
PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 9.1.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Warchief, 
al.getSource() возвращает откуда было послано это событие.
Когда ты клацаешь на кнопку возвращается это кнопка, а когда у тебя активна таблица и ты нажимаешь shortcut - возвращается эта табличка.

Введи какую-нибудь переменную - активная таблица, или выделенные обьекты. Так ты не будешь зависеть от источника события. 


--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 9.1.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Kangaroo, 

точно smile осталось теперь только как-то ухитриться добавить эту самую переменную smile  


если я просто тупо добалвляю переменную и присваю ей значение активной панели, то оно конечно всё работает, если активная панель совпадает с той, с которую я добавляю. Как сделать теперь, чтобы оно на автомате определяло активую панель...  smile 
PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 9.1.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Warchief, 
вот как в любом коммандере. Есть выделененная строка (которая определяет текущий файл); с помощью стрелочек ты двигаешь выделение вниз-вверх. 
Так же и у тебя. Переменная которая содержит таблицу и выделенную строку. Пользователь нажал клавишу вверх - изменяется эта переменная.
Если у тебя сделано все JTable, то там есть событие изменения выделения. Его ловишь и определяешь текущее выделение, ну и меняешь переменную.

Надеюьсь хоть чуть чуть понятно  smile 


--------------------
Lost....
PM MAIL MSN   Вверх
Warchief
Дата 11.1.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Kangaroo, 

Пасиб, почти разобрался smile теперь button'ы работают. Я сделал так: добавил 2 вспомогательные переменные типа JTable и отлавливаю нажатия VK_UP и VK_DOWN. Теперь осталось только как-то отловить nullpointer exception, которое возникает каждый раз после использьования любого перемещения курсора мышью. тоесть переменная в которой храниться аквиная JTable не обновляется.



П.С. Ребят добавьте репутацию  Kangaroo, а то у мну не хватает постов.
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0680 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.