Hice un resolvedor de pirámides matemáticas. Lo que más me cuesta es hacer a UI para la toma y muestra de datos.
Esta es la primera clase con el main.
package erroneo0.piramidematematica;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFormattedTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
*
* @author erroneo0
*/
public class PiramideMain extends JFrame implements ActionListener {
private final int w=25;
private final int h=25;
private JFormattedTextField jft[];
private JButton Resolver,Reset,Cancelar;
NewJFrame njf;
public int valores[]=new int[28];
public PiramideMain()
{
super("Piramide Matematica");
this.setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// getContentPane().setLayout(new BoxLayout(this.getContentPane(),BoxLayout.Y_AXIS));
getContentPane().setLayout(null);
njf=new NewJFrame();
Resolver=new JButton();
Resolver.setBounds(7*25,7*25,100,25);
Resolver.setText("Resolver");
getContentPane().add(Resolver);
Resolver.setActionCommand("Resolver");
Resolver.addActionListener(this);
Reset=new JButton();
Reset.setBounds(7*25,7*25+30,100,25);
Reset.setText("Reset");
getContentPane().add(Reset);
Reset.setActionCommand("Reset");
Reset.addActionListener(this);
jft=new JFormattedTextField[28];
JPanel pnl;
int j=0,k=0;
for(int i=0;i<28;i+=1)
{
jft[i]=new JFormattedTextField();
jft[i].setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0"))));
jft[i].setColumns(4);
jft[i].setAlignmentY(CENTER_ALIGNMENT);
jft[i].setText("");
getContentPane().add(jft[i]);
}
///jft[0].
int i=0;
jft[0].setBounds((225), 0,w, h);
jft[1].setBounds(212, 25, 25, 25);
jft[2].setBounds(237, 25, 25, 25);
jft[3].setBounds(200, 50, 25, 25);
jft[4].setBounds(224, 50, 25, 25);
jft[5].setBounds(250, 50, 25, 25);
jft[6].setBounds(188 ,75, 25, 25);
jft[7].setBounds(188+25 ,75, 25, 25);
jft[8].setBounds(188+50 ,75, 25, 25);
jft[9].setBounds(188+75 ,75, 25, 25);
jft[10].setBounds(176, 25*4, 25, 25);
jft[11].setBounds(176+25, 25*4, 25, 25);
jft[12].setBounds(176+50, 25*4, 25, 25);
jft[13].setBounds(176+75, 25*4, 25, 25);
jft[14].setBounds(176+100, 25*4, 25, 25);
i=5;
jft[15].setBounds(164 , 25*5, 25, 25);
jft[16].setBounds(164+25, i*25, 25, 25);
jft[17].setBounds(164+50 , i*25, 25, 25);
jft[18].setBounds(164+75 , i*25, 25, 25);
jft[19].setBounds(164+100 , i*25, 25, 25);
jft[20].setBounds(164+125 , i*25, 25, 25);
i=6;
jft[21].setBounds(152 , 6*25, 25, 25);
jft[22].setBounds(152+25 , i*25, 25, 25);
jft[23].setBounds(152+50 , i*25, 25, 25);
jft[24].setBounds(152+75 , i*25, 25, 25);
jft[25].setBounds(152+100 , i*25, 25, 25);
jft[26].setBounds(152+125 , i*25, 25, 25);
jft[27].setBounds(152+150 , i*25, 25, 25);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
PiramideMain pm=new PiramideMain();
pm.setVisible(true);
/* java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PiramideMain().setVisible(true);
}
}); */
/* java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});*/
}
@Override
public void actionPerformed(ActionEvent ae) {
switch(ae.getActionCommand())
{
case "Resolver":
for(JFormattedTextField j :jft )
{
if(!(j.getText().equals("")))
{
j.setEditable(false);
}
}
for(int i=0;i<valores.length;i+=1)
{
if(!(jft[i].getText().equals("")))
{
// System.out.println(i+" "+jft[i].getText());
valores[i]=Integer.parseInt(jft[i].getText());
}else{
valores[i]=0;
}
}
resolverValores();
///26 NewJFrame njf;
njf.setValores(valores);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
njf.setVisible(true);
}
});
break;
case "Reset":
for(JFormattedTextField j :jft )
{
if(!(j.getText().equals("")))
{
j.setEditable(true);
}
}
}
}
/**
* Imagine una piramide mas chica, construida por una terna de numeros
* de la manera en que estan declarados los enteros p1,p2,p3;
*/
class Piramidita{
int p1,
p2,p3;
Piramidita(int p,int pp, int ppp)
{
p1=p;
p2=pp;
p3=ppp;
}
void setValues(int p,int pp, int ppp)
{
p1=p;
p2=pp;
p3=ppp;
}
boolean resolver()
//void resolver
{
boolean r=true;
if((p1==0 && p2==0) || (p1==0 && p3==0) || (p3==0 && p2==0))
{
r=false;
return r;
}
if((p1!=0 && p2!=0 )) //&& p3!=(p1-p2)))
{
p3=p1-p2;
} else
if((p1!=0 && p3!=0) )//&& p2!=(p1-p3)))
{
p2=p1-p3;
} else
if((p2!=0 && p3!=0))// && p1!=(p2+p3)))
{
p1=p2+p3;
}
return r;
}
}
/**
* devuelve el indice que esta arriba de 2 cuadritos
* il es el de la izquierda, ir el de la derecha
*/
private int punta(int il,int ir)
{
int r=0;
if(il==1 && ir==2)
r=0;
if(il==3 && ir==4)
r=1;
if(il==4 && ir==5)
r=2;
if(il==6 && ir==7)
r=3;
if(il==7 && ir==8)
r=4;
if(il==8 && ir==9)
r=5;
if(il==10 && ir==11)
r=6;
if(il==11 && ir==12)
r=7;
if(il==12 && ir==13)
r=8;
if(il==13 && ir==14)
r=9;
if(il==15 && ir==16)
r=10;
if(il==16 && ir==17)
r=11;
if(il==17 && ir==18)
r=12;
if(il==18 && ir==19)
r=13;
if(il==19 && ir==20)
r=14;
if(il==21 && ir==22)
r=15;
if(il==22 && ir==23)
r=16;
if(il==23 && ir==24)
r=17;
if(il==24 && ir==25)
r=18;
if(il==25 && ir==26)
r=19;
if(il==26 && ir==27)
r=20;
return r;
}
boolean consecutivos(int i1,int i2)
{
boolean r=false;
if(i1==1 && i2==2)
r=true;
if(i1==3 && i2==4)
r=true;
if(i1==4 && i2==5)
r=true;
if(i1==6 && i2==7)
r=true;
if(i1==7 && i2==8)
r=true;
if(i1==8 && i2==9)
r=true;
if(i1==10 && i2==11)
r=true;
if(i1==11 && i2==12)
r=true;
if(i1==12 && i2==13)
r=true;
if(i1==13 && i2==14)
r=true;
if(i1==15 && i2==16)
r=true;
if(i1==16 && i2==17)
r=true;
if(i1==17 && i2==18)
r=true;
if(i1==18 && i2==19)
r=true;
if(i1==19 && i2==20)
r=true;
if(i1==21 && i2==22)
r=true;
if(i1==22 && i2==23)
r=true;
if(i1==23 && i2==24)
r=true;
if(i1==24 && i2==25)
r=true;
if(i1==25 && i2==26)
r=true;
if(i1==26 && i2==27)
r=true;
return r;
}
/**
* Aca vamos subiendo para obtener los resultados
* si hay 2 cuadritos deteriminados calculamos el que falta
*/
void resolverValores()
{
System.out.println("RESOLVERVALORES");
int i,j,k;
i=j=k=0;
i=valores.length;
Piramidita pir=new Piramidita(0,0,0);
for( i=valores.length;i>0;i--)
{
System.out.println("i: "+i+" i-1 "+(i-1));
if(consecutivos(i-1,i))
{
System.out.println("i "+i+" i-1 "+(i-1)+"Son consecutivos");
k=punta(i-1,i);
System.out.println("i,i-1,k"+i+(i-1)+k+"vk,vi,v(i-1)"+valores[k]+valores[i]+valores[i-1]);
pir.setValues(valores[k],valores[i-1],valores[i]);
pir.resolver();
valores[k]=pir.p1;
valores[i]=pir.p3;
valores[i-1]=pir.p2;
System.out.println("i ,"+i+ " i-1 "+(i-1)+" k "+k);
System.out.println("vk "+valores[k]+" vi "+valores[i]+" v(i-1) "+valores[i-1]);
}
}
}
}
NewJFrame aca abajo
package erroneo0.piramidematematica;
/**
*
* @author erroneo0
*/
public class NewJFrame extends javax.swing.JFrame {
/**
* Creates new form NewJFrame
*/
int valores[]=new int[28];
//Pongo todos los jlabel en un array
void setValores(int v[]){
if(v.length==valores.length)
System.arraycopy(v, 0, valores, 0,valores.length);
int i=0;
javax.swing.JLabel jl;
for(java.awt.Component c:getContentPane().getComponents()){
//System.out.println(c.getClass().getName());
if(c.getClass().getName().equals("javax.swing.JLabel")){
jl=(javax.swing.JLabel) c;
jl.setText(""+valores[i]);
i+=1;
}
}
}
public NewJFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
jLabel20 = new javax.swing.JLabel();
jLabel21 = new javax.swing.JLabel();
jLabel22 = new javax.swing.JLabel();
jLabel23 = new javax.swing.JLabel();
jLabel24 = new javax.swing.JLabel();
jLabel25 = new javax.swing.JLabel();
jLabel26 = new javax.swing.JLabel();
jLabel27 = new javax.swing.JLabel();
jLabel28 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
layout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0};
layout.rowHeights = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0};
getContentPane().setLayout(layout);
jLabel1.setText("jLabel1");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel1, gridBagConstraints);
jLabel2.setText("jLabel2");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel2, gridBagConstraints);
jLabel3.setText("jLabel3");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel3, gridBagConstraints);
jLabel4.setText("jLabel4");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel4, gridBagConstraints);
jLabel5.setText("jLabel5");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 4;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel5, gridBagConstraints);
jLabel6.setText("jLabel6");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 4;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel6, gridBagConstraints);
jLabel7.setText("jLabel7");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel7, gridBagConstraints);
jLabel8.setText("jLabel8");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 6;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel8, gridBagConstraints);
jLabel9.setText("jLabel9");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 6;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel9, gridBagConstraints);
jLabel10.setText("jLabel10");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 6;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel10, gridBagConstraints);
jLabel11.setText("jLabel11");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel11, gridBagConstraints);
jLabel12.setText("jLabel12");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel12, gridBagConstraints);
jLabel13.setText("jLabel13");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel13, gridBagConstraints);
jLabel14.setText("jLabel14");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel14, gridBagConstraints);
jLabel15.setText("jLabel15");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 8;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel15, gridBagConstraints);
jLabel16.setText("jLabel16");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel16, gridBagConstraints);
jLabel17.setText("jLabel17");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel17, gridBagConstraints);
jLabel18.setText("jLabel18");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel18, gridBagConstraints);
jLabel19.setText("jLabel19");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel19, gridBagConstraints);
jLabel20.setText("jLabel20");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel20, gridBagConstraints);
jLabel21.setText("jLabel21");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 10;
gridBagConstraints.gridy = 10;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel21, gridBagConstraints);
jLabel22.setText("jLabel22");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel22, gridBagConstraints);
jLabel23.setText("jLabel23");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel23, gridBagConstraints);
jLabel24.setText("jLabel24");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel24, gridBagConstraints);
jLabel25.setText("jLabel25");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel25, gridBagConstraints);
jLabel26.setText("jLabel26");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel26, gridBagConstraints);
jLabel27.setText("jLabel27");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 10;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel27, gridBagConstraints);
jLabel28.setText("jLabel28");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 12;
gridBagConstraints.gridy = 12;
gridBagConstraints.insets = new java.awt.Insets(0, 2, 4, 1);
getContentPane().add(jLabel28, gridBagConstraints);
pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
private javax.swing.JLabel jLabel28;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
// End of variables declaration
}