Tabela - FocusListener

0

Dzień dobry

2 tabele - defaulTableModel
Focus który pilnuje która tabela jest aktywna.

jTableLewa.addFocusListener(listener);
        jTablePrawa.addFocusListener(listener);
FocusListener listener = new FocusListener() {
            public void focusGained(FocusEvent event) {
                if ((JTable) event.getSource() == jTableLewa) {
                    tab = 1;
                    anHeaderLewa.setForeground(new java.awt.Color(204,0,51));
                    //anHeaderLewa.setForeground(new Color(0).yellow);
                    //System.out.println("-->jTablePrawa =" + tab);
                    
                }
                if ((JTable) event.getSource() == jTablePrawa) {
                    tab = 2;
                    anHeaderPrawa.setForeground(new java.awt.Color(204,0,51));
                    //System.out.println("-->jTablePrawa =" + tab);
                }

            }

Wszystko działa ale aby zmienić tabele muszę kliknąć w wiersz. A wymóg mam by można było kliknąć również w tą szarą część w ramce. Jak coś takiego zrobić? Proszę o podpowiedź.

Mam nadzieje że i tym razem pomożecie :)

0

Nazwy zmiennych masz urocze, np. anHeaderLewa. Problemu nie rozumiem, u mnie niezależnie czy kliknę w wiersz, czy w to szare poniżej wierszy metoda focusGained się wykonuje.

0

popracuje nad czystością ;)

A ja muszę klikać w wiersze bo gdy kliknę w szare bądź nawet w nazwę kolumny to focus nie działa \o/

Mógłbyś rzucić okiem na właściwości tej tabeli (netbeans). Może coś skopałem tam ?

Czy mogłem to gdzieś zmienić przez nieuwagę ?

jTableLewa.setAutoCreateRowSorter(true);
        jTableLewa.setAutoCreateColumnsFromModel(false);
        jTableLewa.setColumnSelectionAllowed(false);
0

U mnie wywołanie tych metod nie zmieniło zachowania focusGained i focusLost. Jak dodajesz tabelę do okna? Ja zawsze tak:

add(new JScrollPane(tabelka));
0

Grafikę tworzę za pomocą interfejsu graficznego w programie.

Widać że netbeans inaczej dodaje te elementy

Zamieszczam kod który "sam" wygenerował. Nic nie usuwałem.

private void initComponents() {

        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableLewa = new javax.swing.JTable();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTablePrawa = new javax.swing.JTable();
        jButtonDodajKatalog = new javax.swing.JButton();
        jButtonUsun = new javax.swing.JButton();
        jButtonCofnijLewa = new javax.swing.JButton();
        jButtonConfijPrawa = new javax.swing.JButton();
        jLabelOldUrlLewa = new javax.swing.JLabel();
        jLabelOldUrlPrawa = new javax.swing.JLabel();
        jButtonKopiuj = new javax.swing.JButton();
        jButtonPrzenies = new javax.swing.JButton();
        jLabelInfo = new javax.swing.JLabel();
        jInfoUrl = new javax.swing.JLabel();
        jInfoVersja = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jCheckBoxLewa = new javax.swing.JCheckBox();
        jCheckBoxPrawa = new javax.swing.JCheckBox();
        jLabel3 = new javax.swing.JLabel();
        jTextFieldStarsze = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jTextFieldMlodsze = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jButtonZmienNazwe = new javax.swing.JButton();
        jOdswiez = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jPolacz = new javax.swing.JMenu();
        jDokumentacja = new javax.swing.JMenu();
        jabout = new javax.swing.JMenu();

        jMenu1.setText("jMenu1");

        jMenuItem1.setText("jMenuItem1");

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        jTableLewa.setAutoCreateRowSorter(true);
        jTableLewa.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "Nazwa", "Autor", "Data", "Typ", "Url", "Tekst"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTableLewa);
        jTableLewa.getColumnModel().getColumn(0).setMinWidth(25);
        jTableLewa.getColumnModel().getColumn(0).setPreferredWidth(25);
        jTableLewa.getColumnModel().getColumn(0).setMaxWidth(25);
        jTableLewa.getColumnModel().getColumn(1).setResizable(false);
        jTableLewa.getColumnModel().getColumn(1).setPreferredWidth(120);
        jTableLewa.getColumnModel().getColumn(2).setResizable(false);
        jTableLewa.getColumnModel().getColumn(2).setPreferredWidth(45);
        jTableLewa.getColumnModel().getColumn(3).setResizable(false);
        jTableLewa.getColumnModel().getColumn(3).setPreferredWidth(105);
        jTableLewa.getColumnModel().getColumn(4).setResizable(false);
        jTableLewa.getColumnModel().getColumn(4).setPreferredWidth(20);
        jTableLewa.getColumnModel().getColumn(5).setResizable(false);
        jTableLewa.getColumnModel().getColumn(5).setPreferredWidth(10);
        jTableLewa.getColumnModel().getColumn(6).setMinWidth(0);
        jTableLewa.getColumnModel().getColumn(6).setPreferredWidth(0);
        jTableLewa.getColumnModel().getColumn(6).setMaxWidth(0);

        jTablePrawa.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "Nazwa", "Autor", "Data", "Typ", "Url", "Tekst"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, true, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTablePrawa.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jScrollPane2.setViewportView(jTablePrawa);
        jTablePrawa.getColumnModel().getColumn(0).setMinWidth(25);
        jTablePrawa.getColumnModel().getColumn(0).setPreferredWidth(25);
        jTablePrawa.getColumnModel().getColumn(0).setMaxWidth(25);
        jTablePrawa.getColumnModel().getColumn(1).setResizable(false);
        jTablePrawa.getColumnModel().getColumn(1).setPreferredWidth(120);
        jTablePrawa.getColumnModel().getColumn(2).setResizable(false);
        jTablePrawa.getColumnModel().getColumn(2).setPreferredWidth(45);
        jTablePrawa.getColumnModel().getColumn(3).setResizable(false);
        jTablePrawa.getColumnModel().getColumn(3).setPreferredWidth(105);
        jTablePrawa.getColumnModel().getColumn(4).setResizable(false);
        jTablePrawa.getColumnModel().getColumn(4).setPreferredWidth(20);
        jTablePrawa.getColumnModel().getColumn(5).setResizable(false);
        jTablePrawa.getColumnModel().getColumn(5).setPreferredWidth(10);
        jTablePrawa.getColumnModel().getColumn(6).setMinWidth(0);
        jTablePrawa.getColumnModel().getColumn(6).setPreferredWidth(0);
        jTablePrawa.getColumnModel().getColumn(6).setMaxWidth(0);

        jButtonDodajKatalog.setText("Dodaj Datalog");
        jButtonDodajKatalog.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonDodajKatalogMouseClicked(evt);
            }
        });

        jButtonUsun.setText("Usuń");
        jButtonUsun.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonUsunMouseClicked(evt);
            }
        });

        jButtonCofnijLewa.setText("|_ Cofnij");
        jButtonCofnijLewa.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jButtonCofnijLewa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonCofnijLewaMouseClicked(evt);
            }
        });

        jButtonConfijPrawa.setText("|_ Cofnij");
        jButtonConfijPrawa.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jButtonConfijPrawa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonConfijPrawaMouseClicked(evt);
            }
        });

        jLabelOldUrlLewa.setBackground(new java.awt.Color(51, 255, 51));
        jLabelOldUrlLewa.setText("/");

        jLabelOldUrlPrawa.setText("/");

        jButtonKopiuj.setText("Kopiuj");
        jButtonKopiuj.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonKopiujMouseClicked(evt);
            }
        });

        jButtonPrzenies.setText("Przenieś");
        jButtonPrzenies.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonPrzeniesMouseClicked(evt);
            }
        });

        jLabelInfo.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabelInfo.setForeground(new java.awt.Color(204, 0, 0));
        jLabelInfo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jLabelInfo.setText("ppp");

        jInfoUrl.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jInfoUrl.setText(".");
        jInfoUrl.setName(""); // NOI18N

        jInfoVersja.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jInfoVersja.setText("0");
        jInfoVersja.setToolTipText("");

        jLabel1.setText("Rewizja:");

        jLabel2.setText("Wyświetl pozycje:");

        jCheckBoxLewa.setText("Tabela lewa");
        jCheckBoxLewa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jCheckBoxLewaMouseClicked(evt);
            }
        });

        jCheckBoxPrawa.setText("Tabela prawa");
        jCheckBoxPrawa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jCheckBoxPrawaMouseClicked(evt);
            }
        });

        jLabel3.setText("Starsze niż:");

        jTextFieldStarsze.setText("0");

        jLabel4.setText("miesięcy.");

        jLabel5.setText("Młodsze niż:");

        jTextFieldMlodsze.setText("0");

        jLabel6.setText("miesięcy.");

        jButtonZmienNazwe.setText("Zmień nazwę");
        jButtonZmienNazwe.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButtonZmienNazweMouseClicked(evt);
            }
        });

        jOdswiez.setText("Odśwież");
        jOdswiez.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jOdswiezMouseClicked(evt);
            }
        });

        jPolacz.setText("Połącz");
        jPolacz.setMargin(new java.awt.Insets(0, 5, 0, 5));
        jPolacz.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jPolaczMouseClicked(evt);
            }
        });
        jMenuBar1.add(jPolacz);

        jDokumentacja.setText("Dokumentacja");
        jDokumentacja.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jDokumentacjaMouseClicked(evt);
            }
        });
        jMenuBar1.add(jDokumentacja);

        jabout.setText("?");
        jabout.setMargin(new java.awt.Insets(0, 5, 0, 5));
        jabout.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jaboutMouseClicked(evt);
            }
        });
        jMenuBar1.add(jabout);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addComponent(jButtonDodajKatalog)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonUsun)
                        .addGap(20, 20, 20)
                        .addComponent(jButtonKopiuj)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonPrzenies)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonZmienNazwe)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel2)
                                .addGap(8, 8, 8)
                                .addComponent(jCheckBoxLewa)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jCheckBoxPrawa)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 307, Short.MAX_VALUE)
                                .addComponent(jInfoUrl, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jLabel3)
                                            .addComponent(jLabel5))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                            .addComponent(jTextFieldStarsze, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
                                            .addComponent(jTextFieldMlodsze))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jLabel4)
                                            .addGroup(layout.createSequentialGroup()
                                                .addComponent(jLabel6)
                                                .addGap(18, 18, 18)
                                                .addComponent(jOdswiez))))
                                    .addComponent(jLabelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 353, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jInfoVersja, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 415, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jButtonCofnijLewa)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabelOldUrlLewa, javax.swing.GroupLayout.PREFERRED_SIZE, 342, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(12, 12, 12)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jButtonConfijPrawa)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabelOldUrlPrawa, javax.swing.GroupLayout.PREFERRED_SIZE, 333, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(0, 0, Short.MAX_VALUE))
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))))
                        .addContainerGap())))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButtonCofnijLewa)
                    .addComponent(jLabelOldUrlLewa)
                    .addComponent(jLabelOldUrlPrawa)
                    .addComponent(jButtonConfijPrawa))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 291, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 291, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButtonDodajKatalog)
                    .addComponent(jButtonUsun)
                    .addComponent(jButtonKopiuj)
                    .addComponent(jButtonPrzenies)
                    .addComponent(jButtonZmienNazwe))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jCheckBoxLewa)
                    .addComponent(jCheckBoxPrawa)
                    .addComponent(jInfoUrl))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel3)
                        .addComponent(jTextFieldStarsze, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel4))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jInfoVersja)
                        .addComponent(jLabel1)))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel5))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jTextFieldMlodsze, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel6)
                            .addComponent(jOdswiez))))
                .addGap(18, 18, 18)
                .addComponent(jLabelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>         
0

Sorry, nigdy nie czytam kodu wygenerowanego przez designera NetBeans.

0

ok rozumie

mam nową wizję i jeszcze zapytam bo też nie radzę sobie z tym

Każda tabela bez danych na wielkość piksela, i jest umieszczona w jScrollPane. Ten komponent trzyma wielkość itd

Da się jakoś ustawić focus na ten komponent ?

0

Da się. Metoda requestFocus lub requestFocusInWindow.

1 użytkowników online, w tym zalogowanych: 0, gości: 1