31. maj 2004 - 11:52Der er
11 kommentarer og 1 løsning
JTabbedPane i Gui
Jeg sidder med et program, hvor jeg gerne vil bruge JTabbedPane til at opdele nogle funktioner. Til det har jeg nogle spørgsmål som jeg håber at der nogen der kan hjælpe mig med. 1. Når man opretter JTabbedPane, så behøver de ikke ligge i forskellige klasser vel? Pt. har jeg lagt det i forskellige klasser, men vil gerne have det i samme klasse. ??? 2. Jeg kan ikke få min ActionListener til at virke i JPanel som jeg PT bruger i de forskellige JTabbedPanes. Er der noget specielt med ActionListener og JPanel.???
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Slettet bruger
31. maj 2004 - 13:22#1
1. Hvis man skal forstå det som at du laver en klasse for hver tab du tilføjer, så nej - det er ikke nødvendigt. Du kunne evt blot kalde en metode i din klasse som returnerer et JPanel hvor du har "smidt" forskellige komponenter på, eller stykke et JPanel sammen før du sammensætter din JTabbedPane, og så tilføje den.
2. Hvis du vil lytte på skift imellem de forskellige panes kan du ikke bruge en ActionListener, du skal derimod knytte en ChangeListener på din JTabbedPane vha. metoden:
hmm. Jeg kan ikke rigtigt få det til at virke med det der ChangeListener. Jeg skriver følgende:
public class "KLASSENAVN" extends JPanel implements ChangeListener {
public "KLASSENAVN"(); { JTextField test2 = new JTextField(); test.setBounds(10,10,10,10); add(test2);
JButton test= new JButton("test"); test.setBounds(340,350,150,30); test.setBorder( new EtchedBorder( EtchedBorder.RAISED )); add(test); test.setToolTipText("Tryk her for at slette alt"); test.addChangeListener(this); }
public void stateChanged(ChangeEvent e) { if(e.getSource()==test) { test2.setText(""); }
} } Hvad gør jeg galt:-(
Synes godt om
Slettet bruger
31. maj 2004 - 14:26#3
Jamen jeg tror du har misforstået hvad du skal bruge changelistener'en til... den bruger du til at håndtere events når brugeren skifter imellem de forskellige tabs. I dit tilfælde, når du vil ha' den til at reagere på "et klik på et knap" skal koden se således ud:
public class "KLASSENAVN" extends JPanel implements ChangeListener {
public "KLASSENAVN"(); { JTextField test2 = new JTextField(); test.setBounds(10,10,10,10); add(test2);
JButton test= new JButton("test"); test.setBounds(340,350,150,30); test.setBorder( new EtchedBorder( EtchedBorder.RAISED )); add(test); test.setToolTipText("Tryk her for at slette alt"); test.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { test2.setText(""); } }); }
Synes godt om
Slettet bruger
31. maj 2004 - 14:27#4
hovsa.... var lidt for hurtig på tasterne, hehe. Det er naturligvis ikke nødvendigt at implementer ChangeListener-interface't mere.
hvis jeg skriver det... klager den over at test2 (altså mit textfield) ikke er final. Men det skal jo helst ikke være final.
Synes godt om
Slettet bruger
31. maj 2004 - 14:32#6
public class "KLASSENAVN" extends JPanel { private JTextField test2;
public "KLASSENAVN"(); { test2 = new JTextField(); test.setBounds(10,10,10,10); add(test2);
JButton test= new JButton("test"); test.setBounds(340,350,150,30); test.setBorder( new EtchedBorder( EtchedBorder.RAISED )); add(test); test.setToolTipText("Tryk her for at slette alt"); test.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { test2.setText(""); } }); }
Selvtak, men ved du hvorfor jeg skal lave dem til final...det er ret underligt. Men det virker med det hele, også filudskrift.
Synes godt om
Slettet bruger
31. maj 2004 - 15:12#11
Det må ha' noget at gøre med scope af den anonyme indre klasse (ActionListener) ikke kan finde en reference til variablen med mindre den er erklæret final. Det burde nu også kunne løses hvis alle dine GUI-komponenter er lavet til instansvariabler på selve klassen, altså ligesom "private JTextField test2;" er det.
Alle mine variabler er lavet på den måde. Og det fungere stadig på samme måde. Også kombobox'ene skal erkleres final for at virke med actionlistener. Meget mystisk.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.