Forum » Programiranje » [Java] Ob kliku na gumb naj se prebere stanje stikal
[Java] Ob kliku na gumb naj se prebere stanje stikal
Bela01 ::
Za lažji pregled sem odprla novo temo.
Torej, ker sem še bolj "zelena" v tem, imam tudi bolj začetniška vprašanje.
Okno vsebuje tri radiobuttone in dva "navadna" gumba. En od teh navadnih gumbov je gumb preveri, ki ugotovi, katero stikalo je izbral uporabnik in nato glede na izbrano stikalo izpiše neko besedilo v določeno Panelo.
Problem je v tem, ker se ob kliku na gumb preveri nič ne zgodi. Kot, da sploh ne gre v metodo actionPerformed(). Kaj sem naredila narobe?
Predvidevam, da nekako v metodi actionPerformed ne more ugotovit stanja stikal. Ampak če dam for zanko, ki je v tej metodi v metodo itemStateChanged, tudi nič ne deluje (pač da bi se odgovor, takoj pokazal, ko bi uporabnik kliknil na gumb).
Torej, ker sem še bolj "zelena" v tem, imam tudi bolj začetniška vprašanje.
Okno vsebuje tri radiobuttone in dva "navadna" gumba. En od teh navadnih gumbov je gumb preveri, ki ugotovi, katero stikalo je izbral uporabnik in nato glede na izbrano stikalo izpiše neko besedilo v določeno Panelo.
Problem je v tem, ker se ob kliku na gumb preveri nič ne zgodi. Kot, da sploh ne gre v metodo actionPerformed(). Kaj sem naredila narobe?
Predvidevam, da nekako v metodi actionPerformed ne more ugotovit stanja stikal. Ampak če dam for zanko, ki je v tej metodi v metodo itemStateChanged, tudi nič ne deluje (pač da bi se odgovor, takoj pokazal, ko bi uporabnik kliknil na gumb).
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class Naloge implements ItemListener, ActionListener { String[] a; String pres = " "; String naloga, odgovor; String[] gumb = new String[3]; private String Preveri_g = "Preveri_g"; private String Naprej_g = "Naprej_g"; //pravilni odgovor je prvi gumb - privzeto int odg = 0; //ustvarimo gumbe JRadioButton[] rgumb = new JRadioButton[3];; JButton preveri, naprej; Toolkit tool = Toolkit.getDefaultToolkit(); Image slika1 = tool.getImage("naloga1.jpg"); //ustvarimo panelo, ki bo nosila ostale v sebi JPanel namizje = new JPanel(new BorderLayout()); JPanel namizje1 = new JPanel(new BorderLayout()); JPanel namizje2 = new JPanel(new BorderLayout()); JPanel resitev = new JPanel(new BorderLayout()); //ostale panele JPanel navodilo = new JPanel(new BorderLayout()); JPanel nosilna = new JPanel(new GridLayout()); JPanel odgovori = new JPanel(new GridLayout(3, 1)); JPanel primeri = new JPanel(new GridLayout()); JPanel gumbi = new JPanel(new GridLayout(1, 2)); public JPanel ZgradiOkno() { //panela nosilna bo vsebovala paneli odgovori in primeri nosilna.add(odgovori); nosilna.add(primeri); //nastavimo lege panel v glavni paneli namizje1.add(navodilo, BorderLayout.NORTH); namizje1.add(nosilna, BorderLayout.CENTER); namizje1.add(resitev, BorderLayout.SOUTH); namizje2.add(gumbi, BorderLayout.SOUTH); namizje.add(namizje1, BorderLayout.NORTH); namizje.add(namizje2, BorderLayout.CENTER); //določimo dimenzije panel navodilo.setPreferredSize(new Dimension(350, 50)); odgovori.setPreferredSize(new Dimension(200, 250)); primeri.setPreferredSize(new Dimension(200, 250)); resitev.setPreferredSize(new Dimension(350, 50)); gumbi.setPreferredSize(new Dimension(350, 50)); //obrobimo namizje namizje1.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5)); namizje2.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5)); //panelam nastavimo robove, možna besedila na rob, ... navodilo.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 0, 5, 0), BorderFactory.createEtchedBorder())); nosilna.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 0, 5, 0), BorderFactory.createEtchedBorder())); odgovori.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createTitledBorder( LineBorder.createGrayLineBorder(), "Možni odgovori"))); primeri.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), BorderFactory.createTitledBorder( LineBorder.createGrayLineBorder(), "Slika kot pomoč"))); resitev.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(1, 0, 1, 0), BorderFactory.createEtchedBorder())); gumbi.setBorder( new CompoundBorder( BorderFactory.createEmptyBorder(1, 0, 1, 0), BorderFactory.createEtchedBorder())); //grupa, ki bo združila radiobutone - rgumbe, da bodo sodelovali med seboj ButtonGroup grupa = new ButtonGroup(); //ustvarimo rgumbe z možnimi odgovori for (int i = 0; i < 3; i++) { rgumb[i] = new JRadioButton(gumb[i]); if (i != odg) rgumb[i].setActionCommand("NE"); else rgumb[i].setActionCommand("DA"); rgumb[i].addItemListener(this); grupa.add(rgumb[i]); odgovori.add(rgumb[i]); } //vstavimo slikico, besedilo v labelo navodilo.add(new JLabel(pres), BorderLayout.WEST); navodilo.add(new JLabel(naloga), BorderLayout.CENTER); Icon ikona = new ImageIcon(slika1); primeri.add(new JLabel(ikona)); resitev.add(new JLabel(pres), BorderLayout.WEST); //ustvarimo in vstavimo v labelo gumba preveri in naprej preveri = new JButton("Preveri"); preveri.setActionCommand(Preveri_g); preveri.addActionListener(this); gumbi.add(preveri); naprej = new JButton("Naprej"); naprej.setActionCommand(Naprej_g); naprej.addActionListener(this); gumbi.add(naprej); return namizje; } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Reševanje nalog"); Naloge app = new Naloge(); // uporabimo drsno površino v primeru premajhnega okna JScrollPane pane = new JScrollPane(app.ZgradiOkno()); pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); frame.getContentPane().add(pane, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } public void itemStateChanged(ItemEvent event) { } public void actionPerformed(ActionEvent event) { if (event.getActionCommand().equals(Preveri_g)) { for (int i = 0; i < 3; i++){ if (rgumb[i].isSelected() && i == odg) { odgovor = "Odgovor je pravilen!"; resitev.add(new JLabel(odgovor), BorderLayout.CENTER); } else { odgovor = "Odgovor ni pravilen!"; resitev.add(new JLabel(odgovor), BorderLayout.CENTER); } } } } }
Bela01 ::
V metodo itemStateChanger sem dala tudi naslednji if stavek, pa nekak noče ugotovit oz. izpisat.
public void itemStateChanged(ItemEvent event) { if (event.getItemSelectable().equals("Da")) resitev.add(new JLabel("OK"), BorderLayout.CENTER); }
KaRkY ::
Ta JLabel na katerega hočeš da se odgovor izpiše ustvari skupaj z ostalimi potem pa samo v actionPerformed kliči setText od tega JLabela.
PS. Sicer mam jaz rešitev ampak bolje je da sama napišeš boš se več naučila
PS. Sicer mam jaz rešitev ampak bolje je da sama napišeš boš se več naučila
Bela01 ::
Pa saj to ne moreš verjet!! Ratalo mi je :D. Pa še kodo sem zaj malo uredila in naredila za vsak Panel svoj razred, ker se več nisem znašla v tisti dolgi klobasi.
Thx KarkY.
Thx KarkY.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [java]problem z ThrowsOddelek: Programiranje | 1607 (1136) | killa bee |
» | [Java] Ne zažene appletaOddelek: Programiranje | 1213 (1146) | iggy |
» | [Java] Zagon appleta v HTMLOddelek: Programiranje | 1545 (1367) | Bela01 |
» | [JAVA] branje iz datotekeOddelek: Programiranje | 2412 (2047) | Bela01 |
» | [Java]VprašanjaOddelek: Programiranje | 2112 (1580) | Bela01 |