Hallo,
ich habe eine Klasse für eine GUI, die so aussieht:
Die Anzeige der Komponenten funktioniert auch bereits, allerdings bin ich damit überfordert diese Klasse um ActionListener für zunächst folgende Funktionen zu erweitern: wenn der OK-Button gedrückt wird oder im JTextField insertWord die Enter-Taste gedrückt wird soll triedList.addEntry() mit dem Eingabewort aus dem JTextField insertWord aufgerufen und anschließend das JTextField erneut geladen (also mit allen Änderungen) werden.
Wie ist das möglich?
Danke,
Martin
ich habe eine Klasse für eine GUI, die so aussieht:
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.net.URL;
import javax.swing.*;
class Spielanzeige
{
private ImageIcon imageIcon;
private JFrame f;
private JLabel pic;
private JLabel statusLine;
private JList forbiddenWords;
private LabelList forbiddenList;
private JList triedWords;
private LabelList triedList;
private JTextField insertWord;
private JButton okButton;
private JLabel timeCounter;
private JButton anotherPic;
private Boolean init = false;
protected void setImage( URL url )
{
imageIcon = new ImageIcon(url);
}
static void addComponent( Container cont, GridBagLayout gbl,
Component c, int x, int y, int width, int height,
double weightx, double weighty )
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = x; gbc.gridy = y;
gbc.gridwidth = width; gbc.gridheight = height;
gbc.weightx = weightx; gbc.weighty = weighty;
gbl.setConstraints( c, gbc );
cont.add( c );
}
public void createAndShowGUI()
{
LabelList forbiddenList = new LabelList();
forbiddenList.addEntry( "verboten" );
forbiddenList.addEntry( "illegal" );
LabelList triedList = new LabelList();
triedList.addEntry( "Versuch 1" );
f = new JFrame();
pic = new JLabel( imageIcon );
statusLine = new JLabel( "Statuszeile" );
forbiddenWords = new JList( forbiddenList.returnList() );
triedWords = new JList( triedList.returnList() );
insertWord = new JTextField();
okButton = new JButton( "OK" );
timeCounter = new JLabel( "Time" );
anotherPic = new JButton( "anderes Bild" );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Container c = f.getContentPane();
GridBagLayout gbl = new GridBagLayout();
c.setLayout( gbl );
// x y w h wx wy
addComponent( c, gbl, pic, 0, 0, 1, 7, 600, 580 );
addComponent( c, gbl, statusLine, 0, 8, 3, 1, 600, 20 );
addComponent( c, gbl, new JLabel("Tabu-Wörter:"), 1, 0, 2, 1, 200, 20 );
addComponent( c, gbl, forbiddenWords, 1, 1, 2, 1, 200, 210 );
addComponent( c, gbl, new JLabel("Eingabewörter:"), 1, 2, 2, 1, 200, 20 );
addComponent( c, gbl, triedWords, 1, 3, 2, 1, 200, 210 );
addComponent( c, gbl, new JLabel("Wort"), 1, 4, 2, 1, 200, 20 );
addComponent( c, gbl, insertWord, 1, 5, 1, 1, 150, 20 );
addComponent( c, gbl, okButton, 2, 5, 1, 1, 50, 20 );
addComponent( c, gbl, new JLabel(""), 1, 6, 2, 1, 200, 20 );
addComponent( c, gbl, timeCounter, 1, 7, 1, 1, 100, 20 );
addComponent( c, gbl, anotherPic, 2, 7, 1, 1, 100, 20 );
f.setSize( 800, 600 );
f.setVisible( true );
init = true;
}
protected void ActionPerformed( ActionEvent insertEntry)
{
triedList.addEntry( insertWord.getText() );
triedWords = new JList( triedList.returnList() );
}
}
Die Anzeige der Komponenten funktioniert auch bereits, allerdings bin ich damit überfordert diese Klasse um ActionListener für zunächst folgende Funktionen zu erweitern: wenn der OK-Button gedrückt wird oder im JTextField insertWord die Enter-Taste gedrückt wird soll triedList.addEntry() mit dem Eingabewort aus dem JTextField insertWord aufgerufen und anschließend das JTextField erneut geladen (also mit allen Änderungen) werden.
Wie ist das möglich?
Danke,
Martin