Teen JTextFieldillä taulukko-olion, jossa 5 alkiota. Asetan ne JPaneliin jokaisen erikseen while-silmukassa ja niille kuuntelijan. Kun ohjelman ajaa niin jokaisessa tekstikentässä on oma tekstinsä. Miten saisin tehtyä niin, että kun tietyn tekstikentän kohdalla painaa ENTERiä niin se tulostaa siinä juuri tietyssä kentässä olevan tekstin konsoliin. Yritin seuraavaa kooodia, mutta ei toimi.
// koodi alkaa
JTextField[] txt3;
txt3 = new JTextField[4];
for (int j = 0; j < txt3.length; j ){
txt3[j] = new JTextField();
}
while(rs.next()){
panel3 = new JPanel();
txt3[i].setText(rs.getString(5));
txt3[i].addActionListener(this); txt3[i].setForeground(Color.black);
panel3.add(txt3[i]);
f2.getContentPane().add(panel3, BorderLayout.SOUTH);
i ;
}
// ja seuraavaksi actionPerformed metodi
public void actionPerformed(ActionEvent evt) {
String text = txt3[i].getText();
System.out.println(text);
}
// Koodi loppuu
Huom. jos tuohon actionPerformed metodiin laittaa pelkästään, että System.out.println("Testi");
niin se tulostaa, että Testi kun painetaan missä tahansa kentässä ENTER. Miten siis hakea siitä nimenomaisesta kentästä teksti ja tulosteta sitä consoliin kun ENTER on painettu?
Tekstikenttä ongelma
3
306
Vastaukset
- juu
Swing:istä enempiä ymmärtämätön kysyy: Mikä on muuttujan i merkitys?
- Piru
txt3 = new JTextField[4];
luo taulukon jossa on 4 alkiota, eikä 5. Alkiot nollasta kolmeen.
Toi i-muuttuja mua hiukan hämää. Sitä ei alusteta whilen sisällä, joten se saattaa olla luokan muuttujia. Se tarkoittais sitä, että kun paneeli on luotu ja pääset vihdoin enteriä painelemaan, niin i on silloin aina maksimiarvossaan eli kuinka monta kertaa rs.next() on onnistunnut.
JTextFieldejä paneelille vietäessä homma vielä toimii. ActionPerformed saa aina sen maksimi i:n arvon.
Suosittelen että otat ihan uuden lähestymistavan tähän ongelmaan. Älä käytä tota i:tä kertomaan, että mikähän JTextFieldin teksti pitää nyt tulostaa.
ActionEvent evt ei tule turhan takia sinne actionPerformed()-metodiin. Jokaisella JTextFieldillä on oma tunnuksensa ja sen saa kaivettua tuolta eventistä. Sen perusteella tiedät, että minkä kentät sisällä sitä enteriä painettiin.
tässä on koko roska:
******************************************
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ActionTesti implements ActionListener{
public ActionTesti() {
super();
}
public static void main(String[] args) {
JFrame ikkuna = new JFrame("Testi");
ikkuna.setSize(200,200);
ikkuna.setVisible(true);
JTextField kentta = new JTextField();
kentta.setSize(80,20);
kentta.addActionListener(new ActionTesti());
kentta.setName("Eka");
JPanel paneeli = new JPanel();
paneeli.setSize(200,200);
paneeli.setVisible(true);
paneeli.add(kentta);
ikkuna.getContentPane().add(paneeli, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent evt) {
JTextField kohde = (JTextField)evt.getSource();
System.out.println(kohde.getText());
}
}
**************************************'- Aulis
Thanks! :)
Sain ton toimimaan.
Pitäis vielä semmonen juttu saada lisätä, että kun on esim. 5 TextFieldiä ja niiden vieressä 5 JLabelia niin, että niiden JLabelien tekstin saisi myös tulostettua siltä tietyltä riviltä, missä TextField-kentässä on painettu enteriä.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Epäily: Räppäri yritti tappaa vauvansa.
https://www.mtvuutiset.fi/artikkeli/epaily-mies-yritti-tappaa-vauvansa/9300728 Tämä on erittäin järkyttävä teko täysin p475345Räppäri kuoli vankilassa
Ei kuulemma ole tapahtunut rikosta. Sama vahinkohan kävi Epsteinille. https://www.hs.fi/suomi/art-2000011840869.html "602042Välillä kyllä tuntuu, että jaat vihjeitä
Mutta miten niistä voi olla ollenkaan varma? Ja minä saan niistä kimmokkeen luulemaan yhtä sun toista. Eli mitä ajatella181750Onko Sanna menossa Ukrainaan viettämään vuosipäivää?
Kun on bongattu Varsovan lentokentältä?1381723- 141445
No kyllä te luuserit voitte tehdä mitä vaan keskenänne, sitä en ymmärrä miksi pelaat,nainen
Pisteesi silmissäni, edes ystävätasolla tippui jo tuhannella, kun sain selville pelailusi, olet toisen kanssa, vaikka ol301397Kulukusuunnat
Eikö kuhmolaiset iha oikiasti tiiä kumpi o vasen ja kumpi oikia? Tuolla ku liikennemerkissä näkyy nuolet ylös ja alas, v4130081-vuotias Frederik avoimena - Ei omasta mielestä kelpaa tästä syystä realityihin: "Veemäinen..."
Junttidiscon kuninkaana tunnettu Frederik, 81, on esiintymislavoilla suvereeni tekijä. Mies on viihdyttänyt ympäri Suome171087Muusikko yritti tappaa kaksiviikkoisen vauvan
Karu epäily: Muusikko, 32, yritti tappaa kaksiviikkoisen vauvan Oulussa. IS:n selvityksen perusteella miestä ei ole syy771048Tynkä Eläintarha ei ole enää visiitin väärti
Ähtärin MesiZoo on vajonnut alas. Näytillä olevien eläinten määrä on romahtanut lähemmäs -40%. Paikat ovat päässeet pah60887