Estou tentando fazer um programa que resolva problemas de programação lenear pelo Metodo Simplex!
A grande dificuldade esta sendo na entrada de dados, pois ela deve ser dinamica.
o usuario coloca o numero de variaveis q sera o problema e o numero de restriçoes e apartir dai cria uma matriz.
por exemplo se ele entrar com numero de variaveis = 3 e numero de restriçoes = 4, tem q criar uma matriz 3X4.[/size]
[size=14]o ploblema esta em fazer isso de modo grafico. Como Faço pra representar essa matriz na tela, apresentando campos de entrada correspondentes aos campos da matriz!
tipo varios campos do tipo JTextField. como crio esses campos na tela dinamicamente?[/size]
Cria um array de 2 dimensões de campos que você quer colocar, ou de labels, ou de botões, tanto faz.
E os coloca na tela na posição que quer controlando largura, altura e um gap de distancia entre eles.
importjava.awt.Container;importjava.awt.Dimension;/** * @author joao */publicclassTelaMatrizextendsjavax.swing.JFrame{privateintlinhas;privateintcolunas;privatejavax.swing.JTextFieldtfCampo[][];/** Creates new form TelaMatriz */publicTelaMatriz(intlin,intcol){linhas=lin;colunas=col;initComponents();}privatevoidinitComponents(){Containerctn=this.getContentPane();ctn.setPreferredSize(newDimension(800,600));tfCampo=newjavax.swing.JTextField[linhas][colunas];ctn.setLayout(neworg.netbeans.lib.awtextra.AbsoluteLayout());intposX=50;intposY=50;intlarg=50;//Largura do campo textointalt=30;//Altura do campo textointgap=5;//Distancia entre um campo e outro.for(inti=0;i<linhas;i++){posX=50;for(intj=0;j<colunas;j++){tfCampo[i][j]=newjavax.swing.JTextField();tfCampo[i][j].addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){tfCampoActionPerformed(evt);}});ctn.add(tfCampo[i][j],neworg.netbeans.lib.awtextra.AbsoluteConstraints(posX,posY,larg,alt));posX=posX+larg+gap;}posY=posY+alt+gap;}pack();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);this.setPreferredSize(newDimension(800,600));this.setVisible(true);}privatevoidtfCampoActionPerformed(java.awt.event.ActionEventevt){//Aqui você pode analisar os conteúdos dos tfCampo usando for duplos e quando todos estiverem preenchidos, disparar algum método.}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){//Os parâmetros indicam número de linhas e colunas respectivamente.newTelaMatriz(8,13);}});}}
theneto.pro
ola amigo!
obrigado pela ajuda!
nao entendi a seguinte linha:
q opção de Layout é essa? nao compila aqui!
e essa outra linha tb nao compila:
JoaoBluSCBR
São linhas necessárias para usar o Absolute Layout.
Eu usei o NetBeans
Faça o seguinte. Crie um novo projeto
Peça um FrameVisual para poder usar o editor Gráfico de telas,
coloque na tela um jTextField e clique na tela e escolha o Absolute Layout.
Daí entre no código e veja como o sistema criou estas linhas no seu caso.
Use-as nestas duas linhas que não estão compilando no seu caso.
JoaoBluSCBR
Não resisti ao desafio de tentar fazer isso com GroupLayout e aí está.
Agora não pode não compilar:
/* * TelaMatriz.java * * Created on 28/06/2011, 14:12:43 */importjava.awt.Container;importjava.awt.Dimension;/** * @author joao */publicclassTelaMatrizextendsjavax.swing.JFrame{privateintlinhas;privateintcolunas;privatejavax.swing.JTextFieldtfCampo[][];/** Creates new form TelaMatriz */publicTelaMatriz(intlin,intcol){linhas=lin;colunas=col;initComponents();}privatevoidinitComponents(){tfCampo=newjavax.swing.JTextField[linhas][colunas];//Cria os campos texto e adiciona eventos a elesfor(inti=0;i<linhas;i++){for(intj=0;j<colunas;j++){tfCampo[i][j]=newjavax.swing.JTextField();tfCampo[i][j].addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){tfCampoActionPerformed(evt);}});}}intlarg=50;//Largura do campo textointalt=30;//Altura do campo textofor(inti=0;i<linhas;i++){for(intj=0;j<colunas;j++){tfCampo[i][j].setPreferredSize(newDimension(larg,alt));}}//Criando o layout de grupo e adicionando os campos texto nele.javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setAutoCreateGaps(true);layout.setAutoCreateContainerGaps(true);//Cria um grupo sequencial para eixo horizontaljavax.swing.GroupLayout.SequentialGrouphGroup=layout.createSequentialGroup();//Criar um grupo para cada linha de componentesjavax.swing.GroupLayout.GrouphGrupo[]=newjavax.swing.GroupLayout.Group[linhas];for(inti=0;i<linhas;i++){hGrupo[i]=layout.createParallelGroup();for(intj=0;j<colunas;j++){hGrupo[i].addComponent(tfCampo[i][j]);}hGroup.addGroup(hGrupo[i]);}layout.setHorizontalGroup(hGroup);// Cria um grupo sequencial para eixo verticaljavax.swing.GroupLayout.SequentialGroupvGroup=layout.createSequentialGroup();//Criar um grupo para cada coluna de componentesjavax.swing.GroupLayout.GroupvGrupo[]=newjavax.swing.GroupLayout.Group[colunas];for(inti=0;i<colunas;i++){vGrupo[i]=layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE);for(intj=0;j<linhas;j++){vGrupo[i].addComponent(tfCampo[j][i]);}vGroup.addGroup(vGrupo[i]);}layout.setVerticalGroup(vGroup);pack();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);this.setPreferredSize(newDimension(800,600));this.setVisible(true);}privatevoidtfCampoActionPerformed(java.awt.event.ActionEventevt){//Aqui você pode analisar os conteúdos dos tfCampo usando for duplos e quando todos estiverem preenchidos, disparar algum método.}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){//Os parâmetros indicam número de linhas e colunas respectivamente.newTelaMatriz(8,13);}});}}