Cory
16-06-2009, 10:19
Ciao a tutti! Sto ceracando di realizzare un'applicazione come la seguente:
http://img150.imageshack.us/img150/5614/immaginequh.th.png (http://img150.imageshack.us/i/immaginequh.png/)
cliccando su "TIRA" simulo il tiro di un dado generando casualmente un numero compreso tra 1 e 6. Ogni JTextArea tiene traccia dei numeri usciti e ogni volta che esce il rispettivo numero scrive nella relativa area il numero di giro a cui esce. Con "RESET" cancello lo storico dei numeri e torno alla situazione iniziale.
Ora, non riesco a riprodurre il Layout (sto usando come LAyout Manager il GridBagLayout) e non riesco nemmeno a fare in modo che il testo delle colonne sia allineato in cima e che il numero di tiro in cui esce ogni numero si scriva sotto e non sostituisca il numero iniziale. Vi copio il codice:
package darts;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class Freccette extends JFrame {
public static void main(String [] args){
JFrame x=new JFrame("Freccette");
x.setSize(400, 300);
x.setContentPane(new Pannello());
x.setDefaultCloseOperation(EXIT_ON_CLOSE);
x.setVisible(true);
x.setResizable(true);
}
}
public class Pannello extends JPanel {
int width=this.getWidth();
int height=this.getHeight();
int larg=width/6;
JLabel lab1;
JLabel lab2;
JButton tira;
JButton reset;
JFormattedTextField text;
JTextArea tf1;
JTextArea tf2;
JTextArea tf3;
JTextArea tf4;
JTextArea tf5;
JTextArea tf6;
public Pannello(){
this.setBackground(Color.WHITE);
this.setLayout(new GridBagLayout());
GridBagConstraints c=new GridBagConstraints();
c.fill=GridBagConstraints.VERTICAL;
/*
setto il layout del pannello */
//Posiziono la label nel pannello
lab1=new JLabel("Ultimo numero uscito:");
c.fill=GridBagConstraints.FIRST_LINE_START;
c.gridx=0;
c.gridy=0;
add(lab1,c);
text=new JFormattedTextField("0");
c.fill=GridBagConstraints.CENTER;
c.gridx=1;
c.gridy=0;
add(text,c);
tira=new JButton("TIRA IL DADO");
c.fill=GridBagConstraints.FIRST_LINE_END;
c.gridx=2;
c.gridy=0;
add(tira,c);
tira.addActionListener(new Tiro());
lab2=new JLabel("Storico dei numeri usciti:");
c.fill=GridBagConstraints.FIRST_LINE_START;
c.gridx=0;
c.gridy=1;
add(lab2,c);
reset=new JButton("RESET");
reset.addActionListener(new Reset());
c.fill=GridBagConstraints.FIRST_LINE_END;
c.gridx=3;
c.gridy=1;
add(reset,c);
tf1=new JTextArea("1");
tf1.setName("1");
tf1.setPreferredSize(new Dimension(100,150));
c.gridx=0;
c.gridy=2;
add(tf1,c);
tf2=new JTextArea("2");
tf2.setName("1");
tf2.setPreferredSize(new Dimension(100,150));
c.gridx=1;
c.gridy=2;
add(tf2,c);
}
//implementazione dei vari actionlistener
class Tiro implements ActionListener {
int i=0;
public void actionPerformed(ActionEvent e) {
Random generatore=new Random(System.currentTimeMillis()/17);
Integer intero=generatore.nextInt((6)+1);
System.out.println(intero);
text.setText(String.valueOf(intero));
i++;
System.out.println("Giro numero:" + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.append("Tiro " + i);
if(intero==Integer.parseInt(tf2.getName()))
tf2.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
}
}
class Reset implements ActionListener{
public void actionPerformed(ActionEvent e) {
tf1.setText("");
}
}
}
Se vi va di aiutarmi...grazie :)
http://img150.imageshack.us/img150/5614/immaginequh.th.png (http://img150.imageshack.us/i/immaginequh.png/)
cliccando su "TIRA" simulo il tiro di un dado generando casualmente un numero compreso tra 1 e 6. Ogni JTextArea tiene traccia dei numeri usciti e ogni volta che esce il rispettivo numero scrive nella relativa area il numero di giro a cui esce. Con "RESET" cancello lo storico dei numeri e torno alla situazione iniziale.
Ora, non riesco a riprodurre il Layout (sto usando come LAyout Manager il GridBagLayout) e non riesco nemmeno a fare in modo che il testo delle colonne sia allineato in cima e che il numero di tiro in cui esce ogni numero si scriva sotto e non sostituisca il numero iniziale. Vi copio il codice:
package darts;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class Freccette extends JFrame {
public static void main(String [] args){
JFrame x=new JFrame("Freccette");
x.setSize(400, 300);
x.setContentPane(new Pannello());
x.setDefaultCloseOperation(EXIT_ON_CLOSE);
x.setVisible(true);
x.setResizable(true);
}
}
public class Pannello extends JPanel {
int width=this.getWidth();
int height=this.getHeight();
int larg=width/6;
JLabel lab1;
JLabel lab2;
JButton tira;
JButton reset;
JFormattedTextField text;
JTextArea tf1;
JTextArea tf2;
JTextArea tf3;
JTextArea tf4;
JTextArea tf5;
JTextArea tf6;
public Pannello(){
this.setBackground(Color.WHITE);
this.setLayout(new GridBagLayout());
GridBagConstraints c=new GridBagConstraints();
c.fill=GridBagConstraints.VERTICAL;
/*
setto il layout del pannello */
//Posiziono la label nel pannello
lab1=new JLabel("Ultimo numero uscito:");
c.fill=GridBagConstraints.FIRST_LINE_START;
c.gridx=0;
c.gridy=0;
add(lab1,c);
text=new JFormattedTextField("0");
c.fill=GridBagConstraints.CENTER;
c.gridx=1;
c.gridy=0;
add(text,c);
tira=new JButton("TIRA IL DADO");
c.fill=GridBagConstraints.FIRST_LINE_END;
c.gridx=2;
c.gridy=0;
add(tira,c);
tira.addActionListener(new Tiro());
lab2=new JLabel("Storico dei numeri usciti:");
c.fill=GridBagConstraints.FIRST_LINE_START;
c.gridx=0;
c.gridy=1;
add(lab2,c);
reset=new JButton("RESET");
reset.addActionListener(new Reset());
c.fill=GridBagConstraints.FIRST_LINE_END;
c.gridx=3;
c.gridy=1;
add(reset,c);
tf1=new JTextArea("1");
tf1.setName("1");
tf1.setPreferredSize(new Dimension(100,150));
c.gridx=0;
c.gridy=2;
add(tf1,c);
tf2=new JTextArea("2");
tf2.setName("1");
tf2.setPreferredSize(new Dimension(100,150));
c.gridx=1;
c.gridy=2;
add(tf2,c);
}
//implementazione dei vari actionlistener
class Tiro implements ActionListener {
int i=0;
public void actionPerformed(ActionEvent e) {
Random generatore=new Random(System.currentTimeMillis()/17);
Integer intero=generatore.nextInt((6)+1);
System.out.println(intero);
text.setText(String.valueOf(intero));
i++;
System.out.println("Giro numero:" + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.append("Tiro " + i);
if(intero==Integer.parseInt(tf2.getName()))
tf2.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
if(intero==Integer.parseInt(tf1.getName()))
tf1.setText("Tiro " + i);
}
}
class Reset implements ActionListener{
public void actionPerformed(ActionEvent e) {
tf1.setText("");
}
}
}
Se vi va di aiutarmi...grazie :)