Noget af det jeg har døjet med længe er at sende en besked fra en swing frame til en anden swing frame. Måden jeg forestiller mig det skal gøres på er ved at trykke på en JButton i JFrame 1, den kalder en metode på JFrame 2 med en tekst streng som JFrame2 så udskriver i et JTextField... Problemet synes at være at jeg ønsker at gøre det mellem to swing forms, jeg kan godt gøre den mellem en AWT form og en swing form ved brugen af invokeLater metoden jvf. Sun's tutorial. Hvis der er nogen der har en løsning så vil jeg gerne se noget kode 8-)
(¯`·._.·[Brian Hvarregaard]·._.·´¯)
camus filosofi
Det her virker! RammeTo.class er omtrent magen til, men minus main. Jeg prøvede først at medtage et JTextPane, men da jeg ikke lige kunne få den til at addere text strengene, så ku' det være lige meget. Den virker ikke tilbage fra ramme to til ramme et, jeg kan ikke lave en new RammeEt() i ramme to, for så vil det jo køre i en sløjfe, og en simpel ref. RammeEt re; er ikke nok.
public class RammeEt extends JFrame{
JTextField jtf = new JTextField();
JButton jb = new JButton();
RammeTo rt = new RammeTo();
BorderLayout layout;
JButton jbcl = new JButton();
public RammeEt() {
super("ramme et");
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jb.setText("send til ramme to");
jb.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jb_actionPerformed(e);
}
});
jbcl.setText("ryt feltet");
jbcl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jbcl_actionPerformed(e);
}
});
layout = new BorderLayout(5, 5);
this.getContentPane().add(jtf, BorderLayout.NORTH);
this.getContentPane().add(jb, BorderLayout.CENTER);
this.getContentPane().add(jbcl, BorderLayout.SOUTH);
setSize(220, 250);
show();
}
void jb_actionPerformed(ActionEvent e) {
rt.jtf.setText(jtf.getText()); // rt.jtf = JTextField i RammeTo
}
void jbcl_actionPerformed(ActionEvent e) {
jtf.setText(" "); jtf.grabFocus();
}
public static void main(String[] args){
RammeEt re = new RammeEt();
re.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
Hum - nej, jeg henter lige RammeTo.class også
public class RammeTo extends JFrame{
JTextField jtf = new JTextField();
JButton jb = new JButton();
BorderLayout layout;
RammeEt re;
JButton jbcl = new JButton();
public RammeTo() {
super("ramme to");
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jb.setText("send til ramme et");
jb.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jb_actionPerformed(e);
}
});
jbcl.setText("ryd feltet");
jbcl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jbcl_actionPerformed(e);
}
});
layout = new BorderLayout(5, 5);
this.getContentPane().add(jtf, BorderLayout.NORTH);
this.getContentPane().add(jb, BorderLayout.CENTER);
this.getContentPane().add(jbcl, BorderLayout.SOUTH);
setSize(220, 250);
show();
}
void jb_actionPerformed(ActionEvent e) {
try{
re.jtf.setText(jtf.getText());
}
catch(Exception ex){ jtf.setText(ex.toString()); }
}
void jbcl_actionPerformed(ActionEvent e) {
jtf.setText(" ");
}
}
hilsen Nils G H Waale alias nighwa