Witam, mam problem z dynamicznym dodawaniem komponentu JTextField poprzez tablicę, z której będą pobierane dane do sortowania.
Cały program już napisałem, ale do pełni szczęścia i działania programu pozostał jeden problem do rozwiązania, z którym nie daję sobie rady. Jak to zrobić?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
JTextArea tekst;
JTextField a;
JTextField b;
public static void main(String[] args) {
Main gui = new Main();
gui.tworzGUI();
}
public void tworzGUI()
{
panelwyboru panelwyboru = new panelwyboru();
JFrame ramka = new JFrame();
JPanel panel = new JPanel();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton cyfry = new JButton("Wprowadź");
ActionListener przyciskcyfry = new przyciskcyfry();
cyfry.addActionListener(przyciskcyfry);
tekst = new JTextArea(10,20);
tekst.setLineWrap(true);
JLabel nazwa = new JLabel("Podaj ilość cyfr: ");
JScrollPane przewijanie = new JScrollPane(tekst);
przewijanie.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
przewijanie.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
a=new JTextField("",12);
panel.add(przewijanie);
panelwyboru.add(nazwa);
panelwyboru.add(a);
panelwyboru.add(cyfry);
ramka.getContentPane().add(BorderLayout.CENTER, panel);
ramka.getContentPane().add(BorderLayout.WEST, panelwyboru);
ramka.setSize(350,300);
ramka.setVisible(true);
}
class przyciskcyfry implements ActionListener
{
public void actionPerformed(ActionEvent zdarzenie)
{
int m = Integer.parseInt(a.getText());
b = new JTextField[m]; // **Tutaj nie chce działać.**
for(int i=0; i<b.length; i++) ----------------------------
{ ----------------------------
b[i]=new JTextField(); ----------------------------
panelwyboru.add(b[i]); ----------------------------
} ----------------------------
panelwyboru.revalidate(); // **Tutaj kończy się mój problem.**
int[]w = new int[m];
czytajWek(w,m);
drukujWek(w,m,"Elementy wektora");
w= sort_proste(w,m);
drukujWek(w,m,"Elementy wektora");
}
public void czytajWek(int[] w,int m)
{
String wartosc;
int j;
for(j=0; j<m; j++)
{
j++;
wartosc = JOptionPane.showInputDialog("podaj wartość "+j+"/"+w.length);
j--;
w[j]=Integer.parseInt(wartosc);
}
}
}
public static void drukujWek(int[]w,int m, String tekst)
{
int i;
String napis;
napis = " ";
for(i = 0; i<m;i++)
napis +=" "+w[i];
JOptionPane.showMessageDialog(null,napis,tekst,JOptionPane.INFORMATION_MESSAGE);
}
private static int[] sort_proste(int[]w,int m)
{
int p, min, pozmin;
for (p=0;p<m-1;p++)
{ min = w[p];
pozmin = p;
for(int k=p+1;k<m;k++)
if(w[k]<min)
{
min = w[k];
pozmin=k;
}
w[pozmin] = w[p];
w[p]=min;
}
return w;
}
class panelwyboru extends JPanel
{
public panelwyboru()
{
setBackground(Color.red);
}
}
}
Z grafiką bawię się od niedawna i kod może być trochę chaotycznie napisany, ponieważ byłem pewny, że dam radę to napisać w krótkim czasie. Jednak tak się nie stało.