Hirdetés

Keresés

Új hozzászólás Aktív témák

  • orc88
    őstag

    Sziasztok!

    Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.

    Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.

    A probléma a következő:
    1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából :U
    Mi lehet a gubanc? :F

    A setText() metódus:
    public void setTexts() {
    DefaultTableModel model = (DefaultTableModel) tabla.getModel();
    text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
    text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
    text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
    text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
    text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
    }

    És ahol meghívom:
    private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
    if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
    java.awt.event.KeyEvent.VK_DOWN) {
    setTexts();
    }
    }

    Ismét ezzel táblázatos gyakorló projektemmel van gond, 2 napja próbálkozok mindennel IS, többször újraírtam a kérdéses részt, de nem akarja az igazat :(

    Van 1 textfield, ahova vonalkód olvasóval lehet bevinni az adatokat, a vonalkód olvasó az olvasás után ENTER-t "üt".
    A kód szépen megtalálja, végrehajtja a megfelelő utasításokat a saját gépemen amin írom (i7 3.7Ghz + 12GB ram). A probléma akkor következik, mikor egy lassú pentiumos laptopon futtatom, hibajelenség:
    - 5x olvastam le ugyanazt a kódot egymás után, és össze vissza dobál ✔-t és ✖-et ovlasás után.
    - sokszor elkezd ugrálni a táblázatban még azelőtt mielőtt érkezne az Enter... (nincs más key event hozzárendelve)

    Mivel teljesen random viselkedik ugyanazon vonalkód esetében is már csak arra tudtam gondolni, hogy "túl" gyors neki az olvasás, vagy nem elég hatékony a kódom, más logikus magyarázatot nem találtam.. :U

    De hátha ti jobban átlátjátok :B

    Az Enter után keresem ki, hogy melyik áruról van szó:

    private void text_searchKeyReleased(java.awt.event.KeyEvent evt) {
      if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
        indextalalat = -2;
        zText.setLength(0); //Stringbuildert használok, hogy megmaradjon az utolsó érték a field ürítése után is.
        zText.append(text_search.getText());
        for (int i = 0; i <= tabla.getRowCount()-1; i++) {
        if (tabla.getValueAt(i, 2).toString().replaceAll("\\s+","").equals(text_search.getText())) {
        indextalalat = i;
        break;
      }
    }

        if (indextalalat != -2) {
            text_search.setText(null);
            talalatLabel0.setText("✔");
            tabla.setRowSelectionInterval(indextalalat, indextalalat);
            tabla.scrollRectToVisible(new Rectangle(tabla2.getCellRect(indextalalat, 0, true)));
            setTexts();
          } else {
            text_search.setText(null);
            talalatLabel0.setText("✖");
            tabla.removeColumnSelectionInterval(0, tabla.getColumnCount()-1);
          }

        }

    }

  • Drizzt
    nagyúr

    Sziasztok!

    Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.

    Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.

    A probléma a következő:
    1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából :U
    Mi lehet a gubanc? :F

    A setText() metódus:
    public void setTexts() {
    DefaultTableModel model = (DefaultTableModel) tabla.getModel();
    text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
    text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
    text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
    text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
    text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
    }

    És ahol meghívom:
    private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
    if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
    java.awt.event.KeyEvent.VK_DOWN) {
    setTexts();
    }
    }

    Én ugyan nem értek az AWT-hez, de az hogyan találja ki up, vagy down arrow lenyomásra, hogy fel, vagy le kell állítania az aktuális sort?
    A handler amit írtál, mindenképpen beállítja a textet a kijelölt sor alapján. De mi állítja be a kijelölt sort? Van valami az AWT-ben ami automatikusan állítja a sor billentyű lenyomásra? Ebben az esetben valamilyen olyan listenert kellene meghívni ami biztosan a selection megváltozása után lesz meghívva.

    Itt pl. a ListSelectionListener.

  • orc88
    őstag

    Sziasztok!

    Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.

    Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.

    A probléma a következő:
    1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából :U
    Mi lehet a gubanc? :F

    A setText() metódus:
    public void setTexts() {
    DefaultTableModel model = (DefaultTableModel) tabla.getModel();
    text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
    text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
    text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
    text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
    text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
    }

    És ahol meghívom:
    private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
    if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
    java.awt.event.KeyEvent.VK_DOWN) {
    setTexts();
    }
    }

    keyReleased-re kellett rakni, bocsi az amatőrködésért :B :R

Új hozzászólás Aktív témák