Hallo,
meine Prüfungsaufgabe nähert sich dem Ende, morgen ist Abgabe und es gibt noch einiges zu tun :-(
Eines der letzten Probleme ist Folgendes: Ich habe drei Buttons. Button1 soll Bild1 aufrufen, Button2 soll Bild 2 aufrufen und Button3 eine Textarea.
Bild 1 erscheint bereits bei Programmbeginn. Aber die Verknüpfung mit dem Button klappt nicht. Wenn ich den Code so programmiere, dass das Label2 auf Knopfdruck des Buttons2 in mein Panel reingesetzt wird, dann kommt bei der Kompilierung die Fehlermeldung "local variable constraints is accessed from within inner class; needs to be declared final gridbag.setConstraints(lbl1, constraints);", constraints ist doch keine Variable!? (dummguck). Wahrscheinlich wieder etwas, das ich nicht verstanden habe, da der Kurs auf Schwedisch ist. Aber die Zeit drängt, deshalb hoffe ich, dass mir hier jemand einen Tipp gibt.
Hier ist der Code:
Vollständigkeitshalber hier noch der Code der Superclass:
Es wäre super, wenn mir jemand einen Tipp hat, so dass ich weiter basteln kann. Ich weiß eure Hilfe sehr zu schätzen.
LG
Clou
meine Prüfungsaufgabe nähert sich dem Ende, morgen ist Abgabe und es gibt noch einiges zu tun :-(
Eines der letzten Probleme ist Folgendes: Ich habe drei Buttons. Button1 soll Bild1 aufrufen, Button2 soll Bild 2 aufrufen und Button3 eine Textarea.
Bild 1 erscheint bereits bei Programmbeginn. Aber die Verknüpfung mit dem Button klappt nicht. Wenn ich den Code so programmiere, dass das Label2 auf Knopfdruck des Buttons2 in mein Panel reingesetzt wird, dann kommt bei der Kompilierung die Fehlermeldung "local variable constraints is accessed from within inner class; needs to be declared final gridbag.setConstraints(lbl1, constraints);", constraints ist doch keine Variable!? (dummguck). Wahrscheinlich wieder etwas, das ich nicht verstanden habe, da der Kurs auf Schwedisch ist. Aber die Zeit drängt, deshalb hoffe ich, dass mir hier jemand einen Tipp gibt.
Hier ist der Code:
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Projekt extends Ramen
{
private String text1;
void buildConstraints(GridBagConstraints gbc, int gx, int gy,
int gw, int gh, int wx, int wy) {
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;
}
public Projekt()
{
JScrollPane scrollyta;
//JLabel lbl1, lbl2, lbl3;
ImageIcon bild1, bild2;
text1=("");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
JPanel pane = new JPanel();
pane.setLayout(gridbag);
// textfield
buildConstraints(constraints, 0, 0, 5, 1, 100, 0);
constraints.fill = GridBagConstraints.HORIZONTAL;
final JTextField textfält = new JTextField();
gridbag.setConstraints(textfält, constraints);
pane.add(textfält);
// tomt platshåller
buildConstraints(constraints, 0, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.EAST;
JLabel label1 = new JLabel(" ", JLabel.LEFT);
gridbag.setConstraints(label1, constraints);
pane.add(label1);
// knapp1
buildConstraints(constraints, 1, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp1 = new JButton("Bild 1");
gridbag.setConstraints(knapp1, constraints);
pane.add(knapp1);
// knapp2
buildConstraints(constraints, 2, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp2 = new JButton("Bild 2");
gridbag.setConstraints(knapp2, constraints);
pane.add(knapp2);
// knapp3
buildConstraints(constraints, 3, 1, 1, 1, 0, 0);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
JButton knapp3 = new JButton("Text area");
gridbag.setConstraints(knapp3, constraints);
pane.add(knapp3);
// Label 1 (Bild 1)
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl1 = new JLabel(new ImageIcon("wave.gif")
// SwingConstants.LEFT
);
gridbag.setConstraints(lbl1, constraints);
pane.add(lbl1);
//============== Hier beginnt das Problem
// Label 2 (Bild 2)
knapp2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JLabel lbl2 = new JLabel(new ImageIcon("surf.jpg")
// SwingConstants.LEFT
);
gridbag.setConstraints(lbl2, constraints);
pane.add(lbl2);
}
}
);
//================= Und Folgendes ist nur vorbereitet, muss auch noch mit dem Button3 verknüpft werden,
//================= aber eins nach dem Anderen :-)
// textarea
buildConstraints(constraints, 0, 2, 5, 10, 100, 100);
constraints.fill = GridBagConstraints.BOTH;
final JTextArea textarea = new JTextArea();
gridbag.setConstraints(textarea, constraints);
pane.add(textarea);
// Content Pane
setContentPane(pane);
setVisible(true);
// item1 - avsluta
item1.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
System.exit( 0 );
}
}
);
// item2 - lägg till text
item2.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
text1=(text1 + textfält.getText());//fylla på innehåll från textfält och gammal text från textarea
textfält.setText("");// gör textfält tomt
}
}
);
// item3 - radera text
item3.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textarea.setText("");// gör textarea tomt
}
}
);
}
public static void main(String [] args)
{
Projekt test = new Projekt();
}
}
Vollständigkeitshalber hier noch der Code der Superclass:
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Ramen extends JFrame
{
public JMenuBar mbar;
public JMenu meny1, meny2;
public JMenuItem item1, item2, item3;
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
public Ramen()
{
mbar = new JMenuBar();
meny1 = new JMenu("Arkiv");
meny2 = new JMenu("Info");
item1 = new JMenuItem("Avsluta");
item2 = new JMenuItem("Lägg till text");
item3 = new JMenuItem("Radera text");
setJMenuBar(mbar);
mbar.add(meny1);
mbar.add(meny2);
meny1.add(item1); meny2.add(item2); meny2.add(item3);
Container c = getContentPane();
c.setLayout(new GridBagLayout());
c.setBackground(Color.WHITE);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
pack();
}
}
Es wäre super, wenn mir jemand einen Tipp hat, so dass ich weiter basteln kann. Ich weiß eure Hilfe sehr zu schätzen.
LG
Clou