PDA

View Full Version : JAVA Help!


Fire Fox II
13-07-2004, 16:02
Salve raga :)

premesso che non toccavo java da circa un anno :eek: :D, oggi ho scritto il prog visualizzato qui sotto... Volevo chiedervi, cosa ho sbagliato visto che scegliendo l'opzione "prenota" mi compare una nuova finestra senza che venga pulita quella precedente

In pratica dovrebbe comparirmi una nuova finestra, e non la stessa con i nuovi campi...

Scusate se non mi sono espresso bene ma mi è venuto un terribile mal di testa :muro:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.lang.*;

public class AddressBook extends JFrame
{
private JPanel labelPanel;
private JPanel label2Panel;
private JPanel inputOutputPanel;
private JPanel displayPanel;
private JPanel display2Panel;
private JPanel buttonPanel;
private JPanel button2Panel;
private JPanel backPanel;
private JPanel back2Panel;
private JTextField nomeInput;
private JTextField cognomeInput;
private JTextField addressInput;
private JTextField patenteInput;
private JTextField luogoInput;
private JTextField nazioneInput;
private JTextField annoInput;
private JButton prenotaButton;
private JButton prelevaButton;
private JButton estendiButton;
private JButton aggButton;
private JButton consegnaButton;
private String s1, s2, s3, s4, s5, s6, s7;

public AddressBook()
{
super ("Scegliere il campo");
displayPanel = new JPanel();
displayPanel.setLayout(new BorderLayout());
prenotaButton = new JButton("Prenota");
buttonPanel = new JPanel();
buttonPanel.add(prenotaButton);
consegnaButton = new JButton("Consegna");
buttonPanel.add(consegnaButton);
prelevaButton = new JButton("Preleva");
buttonPanel.add(prelevaButton);
estendiButton = new JButton("Estendi");
buttonPanel.add(estendiButton);
aggButton = new JButton("Aggiorna");
buttonPanel.add(aggButton);
backPanel = new JPanel();
backPanel.setLayout(new BorderLayout());
backPanel.add(displayPanel,BorderLayout.CENTER);
backPanel.add(buttonPanel,BorderLayout.NORTH);
getContentPane().add(backPanel);

prenotaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
prenota();
}
}
);

prelevaButton.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);

aggButton.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);

estendiButton.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);

consegnaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
pack();
setResizable(false);
setVisible(true);
setSize(500,250);
show();
}

public void prenota()
{
display2Panel = new JPanel();
display2Panel.setLayout(new BorderLayout());
label2Panel = new JPanel();
label2Panel.setLayout(new GridLayout (7,1));
label2Panel.add(new JLabel ("Nome: "));
label2Panel.add(new JLabel ("Cognome: "));
label2Panel.add(new JLabel ("Indirizzo: "));
label2Panel.add(new JLabel ("N. patente: "));
label2Panel.add(new JLabel ("Anno di nascita: "));
label2Panel.add(new JLabel ("Nazionalità: "));
label2Panel.add(new JLabel ("Luogo di nascita: "));
inputOutputPanel = new JPanel();
inputOutputPanel.setLayout(new GridLayout (7,1));
nomeInput = new JTextField (20);
inputOutputPanel.add(nomeInput);
cognomeInput = new JTextField (20);
inputOutputPanel.add(cognomeInput);
addressInput = new JTextField (20);
inputOutputPanel.add(addressInput);
patenteInput = new JTextField (20);
inputOutputPanel.add(patenteInput);
annoInput = new JTextField (4);
inputOutputPanel.add(annoInput);
nazioneInput = new JTextField (20);
inputOutputPanel.add(nazioneInput);
luogoInput = new JTextField (20);
inputOutputPanel.add(luogoInput);
display2Panel = new JPanel();
display2Panel.setLayout(new BorderLayout());
display2Panel.add(label2Panel,BorderLayout.WEST);
display2Panel.add(inputOutputPanel,BorderLayout.CENTER);
prenotaButton = new JButton("Ok");
button2Panel = new JPanel();
button2Panel.add(prenotaButton);
consegnaButton = new JButton("Find");
button2Panel.add(consegnaButton);
back2Panel = new JPanel();
back2Panel.setLayout(new BorderLayout());
back2Panel.add(display2Panel,BorderLayout.CENTER);
back2Panel.add(button2Panel,BorderLayout.SOUTH);
getContentPane().add(back2Panel);

prenotaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);

consegnaButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);
show();
}

public static void main(String[] args)
{
AddressBook addressbook = new AddressBook();
AddressBook prenota = new AddressBook();

}}



Thanks :)

kingv
13-07-2004, 16:14
nel main istanzi due AddressBook, a me compaiono subito due finestre :O

kingv
13-07-2004, 16:31
hai provato a chiamare una getContentPane().removeAll(); prima di fare la add del backPanel2?

PGI
13-07-2004, 17:46
kingv ti ha offerto la soluzione.

Per il resto...se a te è venuto il mal di testa, Swing è finito dritto in rianimazione. Speriamo che se la cavi :D.

Ciao.

Fire Fox II
13-07-2004, 21:34
Originariamente inviato da kingv
hai provato a chiamare una getContentPane().removeAll(); prima di fare la add del backPanel2?

Ma lol! Che zingaro che sono, era proprio questo che mancava ;)

Ehm, ne approfitto per chiedere una cosa un pò più particolare :D : nella prima finestra, è possibile immettere lo sfondo, o magari aggiungerci, una jpeg?

Questo non l'ho mai fatto, quindi è lungi dal mal di testa che mi sta assillando :D

Thanks ancora :)

kingv
14-07-2004, 11:07
Originariamente inviato da Fire Fox II
Ehm, ne approfitto per chiedere una cosa un pò più particolare :D : nella prima finestra, è possibile immettere lo sfondo, o magari aggiungerci, una jpeg?



mettere un'immagine come sfondo secondo me non si puo' fare ma non sono esperto di Swing :O

PGI
14-07-2004, 12:33
Faccio un esempio super-kitsch


import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.*;

public class SampleApp1 {
public static void main(String[] args) {
FlowLayout iPaneLayout = new FlowLayout(FlowLayout.LEFT);
Image image = new ImageIcon("unreal.png").getImage();

CustomComponent imagePanel = new CustomComponent(image);
imagePanel.setLayout(iPaneLayout);

JButton pulsante1 = new JButton("press me!");
pulsante1.setForeground(Color.WHITE);
pulsante1.setContentAreaFilled(false);
imagePanel.add(pulsante1, 0);

JButton pulsante2 = new JButton("press me!");
imagePanel.add(pulsante2, 1);

final JFrame frame = new JFrame("SampleApp1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(imagePanel);
frame.pack();
frame.setResizable(false);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.setVisible(true);
}
});
}

private static class CustomComponent extends JComponent {
private Image image;

private CustomComponent(Image image) {
super();
this.image = image;
setPreferredSize(new Dimension(
image.getWidth(null), image.getHeight(null)));
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
}


shot (http://web.infinito.it/utenti/t/triboniano/sampleapp1.png)

Di alcuni componenti puoi controllare la trasparenza (nel codice c'è un JButton trasparente ed uno opaco), altri, di solito più complessi, possono richiedere qualche manipolazione (ad esempio una JComboBox o un JTextPane).

Ciao.

kingv
14-07-2004, 15:45
Originariamente inviato da PGI

Di alcuni componenti puoi controllare la trasparenza (nel codice c'è un JButton trasparente ed uno opaco), altri, di solito più complessi, possono richiedere qualche manipolazione (ad esempio una JComboBox o un JTextPane).

Ciao.


appunto era meglio aspettare un esperto di swing. :D :D

[OT] cos'e' quello schifo :Puke:

PGI
14-07-2004, 16:22
Dai è fichissimo :D

E' uno dei modelli usati per le dimostrazioni dellUnreal engine 3 (mi pare sia il 3...insomma, non quello di adesso, il prossimo)

Fire Fox II
15-07-2004, 00:20
Originariamente inviato da PGI


CustomComponent imagePanel = new CustomComponent(image);




Io qui mi becco un errore! :what:

Cannot resolve symbol

What is? :)

PGI
15-07-2004, 11:39
Può essere un errore di battitura, dipende da quello che ti dice il messaggio dopo.

kingv
15-07-2004, 13:32
CustomComponent imagePanel = new CustomComponent(image);


ma e' roba Sun questa?

PGI
15-07-2004, 15:32
No, è roba mia (10 linee, caspita che paternità :D ) La classe CustomComponent l'ho dichiarata poco sotto al main, è un'estensione di javax.swing.JComponent:


private static class CustomComponent extends JComponent {

kingv
15-07-2004, 15:56
Originariamente inviato da PGI
No, è roba mia (10 linee, caspita che paternità :D )


sono accecato, scusa :doh:

Fire Fox II
15-07-2004, 18:30
PGI hai PVT :)