14. januar 2004 - 10:50
Der er
6 kommentarer og 1 løsning
lukning af vindue til nyt vindue andre parametre (threads)
Hejsa Jeg har et vindue som viser x-antal JTextField's, derudover er der en knap og endnu et JTextField benævnt 'input' Meningen er, at et tryk på knappen medfører at det eksisterende vindue dør og et laves med input's indhold som parameter til constructoren. Det nye vindue kommer således til at indeholde input-antal JTextField's samt knappen og input-feltet. Mit problemer er, at følgende resulterer i en total lukning af programmet: if(e.getSource() == knap){ new Vindue(input.getText()); System.exit(0); } Jeg er IKKE interesseret i blot at "hide" vinduet. Min mistanke er, at jeg bør lave det i tråde - hvad syntes du? Er lidt rusten i Threads så et eksempel ville være nice!
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
14. januar 2004 - 10:57
#1
System.exit betuder luk programmet, så det er ikke overraskende.
14. januar 2004 - 10:58
#2
Har du prøvet at kalde dispose metoden ?
14. januar 2004 - 11:00
#3
nope, hvad gør den?
14. januar 2004 - 11:02
#4
public void dispose() Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children. That is, the resources for these Components will be destroyed, any memory they consume will be returned to the OS, and they will be marked as undisplayable.
14. januar 2004 - 11:02
#5
Arne du er en .... øhh... sveske :O) Det var lige det der manglede - der kan man bare se hvad der sker, når man ikke sætter sig ind i det allermest basale Java :O) Her er koden hvis nogen er interesseret... import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; /** * Created by IntelliJ IDEA. * User: larsdyrelund * Date: Jan 14, 2004 * Time: 8:33:15 AM * To change this template use Options | File Templates. */ public class Uge3Opgave1 extends JFrame implements ActionListener{ private int antalFelter; private JLabel label; private JTextField input; private JPanel north; private JButton beregn; private JButton submit; private JTextField [][] felt; private JLabel [] v_sum; //vertikal del sum private JLabel [] h_sum; //horisontal del sum private JLabel total; //total sum private JPanel panel; private GridLayout grid; public Uge3Opgave1(int antalFelter){ if(antalFelter == 0){ this.antalFelter = 3; } else { this.antalFelter = antalFelter; } felt = new JTextField[antalFelter][antalFelter]; v_sum = new JLabel[antalFelter]; h_sum = new JLabel[antalFelter]; //Generering af felter for(int i = 0; i < antalFelter; i++) for(int j = 0; j < antalFelter; j++){ felt[i][j] = new JTextField(String.valueOf(i), 2); felt[i][j].addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent me){ JTextField temp = (JTextField)me.getSource(); temp.selectAll(); } }); } for(int i = 0; i < (antalFelter); i++) v_sum[i] = new JLabel(); for(int i = 0; i < (antalFelter); i++) h_sum[i] = new JLabel(); total = new JLabel(); north = new JPanel(); label = new JLabel("Antal felter"); input = new JTextField(String.valueOf(antalFelter),3); input.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent me){ JTextField temp = (JTextField)me.getSource(); temp.selectAll(); } }); submit = new JButton("Submit"); submit.addActionListener(this); beregn = new JButton("Beregn"); beregn.addActionListener(this); grid = new GridLayout((antalFelter+1), (antalFelter+1), 1, 1); panel = new JPanel(grid); Container cp = getContentPane(); cp.setLayout(new BorderLayout()); panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); setDefaultCloseOperation(3); //Klippe / Klister north.add(label); north.add(input); north.add(submit); for(int i = 0; i < antalFelter; i++){ for(int j = 0; j < antalFelter; j++) panel.add(felt[i][j]); panel.add(h_sum[i]); } for(int i = 0; i < antalFelter; i++) panel.add(v_sum[i]); panel.add(total); cp.add(north, BorderLayout.NORTH); cp.add(panel, BorderLayout.CENTER); cp.add(beregn, BorderLayout.SOUTH); beregn(antalFelter); pack(); show(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2); } private void beregn(int antalFelter){ //beregn horisontalt for(int i = 0; i < antalFelter; i++) h_sum[i].setText(String.valueOf(beregn(i, antalFelter, 1))); //beregn vertikalt for(int i = 0; i < antalFelter; i++) v_sum[i].setText(String.valueOf(beregn(i, antalFelter, 0))); total.setText(String.valueOf(beregnTotal(antalFelter))); } private int beregn(int pivot, int antalFelter, int orientation){ //Orientation 1 = horisontalt, 0 = vertikalt int sum = 0; if(orientation == 1) for(int i = 0; i < antalFelter; i++) sum += Integer.parseInt(felt[pivot][i].getText()); else if(orientation == 0) for(int i = 0; i < antalFelter; i++) sum += Integer.parseInt(felt[i][pivot].getText()); return sum; } private int beregnTotal(int antalFelter){ int total = 0; for(int i = 0; i < antalFelter; i++) total += Integer.parseInt(v_sum[i].getText()); return total; } public void actionPerformed(ActionEvent e){ Object event = e.getSource(); if(event == beregn) beregn(antalFelter); else if(event == submit){ int nytAntal = Integer.parseInt(input.getText()); if(nytAntal == antalFelter) return; else { new Uge3Opgave1(nytAntal); dispose(); } } } public static void main(String[] args) { new Uge3Opgave1(4); } }
14. januar 2004 - 11:03
#6
Reply and you shall be rewarded!
14. januar 2004 - 11:04
#7
svar
Kurser inden for grundlæggende programmering