Witam,
Stworzyłem dwie klasy. Pierwsza to klasa główna Test, ma za zadanie ustawienie rozmiaru wyświetlanego okna, oraz wyświetlanie tabeli która jest tworzona przez drugą klasę Tabela_16x4. Zwracam się z prośbą, ponieważ nie wiem jak poprawnie dodać tabelę do klasy głównej, utworzyłem obiekt, wywołałem potrzebne metody leczy przy add(Tabela), program się wysypuje. Dodam, że gdy utworzyłem obiekt w klasie Tabela_16x4 i zdefiniowałem rozmiar wyswietlanego okna, wszystko działało poprawnie. Poniżej załączam kody programów wraz z błędami.
Dziękują za wszystkie pouczające odpowiedzi!
Klasa Główna: Test
import javax.swing.JFrame;
public class Test extends JFrame {
Tabela_16x4 Tabela;
char bin[][] = { // 16x4 4 przerzutniki
{ '0', '0', '0', '0' },
{ '0', '0', '0', '1' },
{ '0', '0', '1', '0' },
{ '0', '0', '1', '1' },
{ '0', '1', '0', '0' },
{ '0', '1', '0', '1' },
{ '0', '1', '1', '0' },
{ '0', '1', '1', '1' },
{ '1', '0', '0', '0' },
{ '1', '0', '0', '1' },
{ '1', '0', '1', '0' },
{ '1', '0', '1', '1' },
{ '1', '1', '0', '0' },
{ '1', '1', '0', '1' },
{ '1', '1', '1', '0' },
{ '1', '1', '1', '1' }
};
public static void main(String[] args) {
Test Program = new Test();
Program.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Program.setVisible(true);
}
public Test() // konstruktor
{
// Ustawienia Okna
setSize(1000, 1000);
setTitle("Przeliczanie");
setLayout(null);
// Dodanie Tabeli
Tabela_16x4 Tabela = new Tabela_16x4();
Tabela.Tworz_Tabele(20, 30, "Napis");
Tabela.Wypelnij_Tabele(20, 30, 4, 4, bin);
add(Tabela);
}
}
Lista błędów:
at java.awt.Container.checkNotAWindow(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JFrame.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Test.<init>(Test.java:44)
at Test.main(Test.java:28)
Klasa **Tabela_16x4 **
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Tabela_16x4 extends JFrame{
JLabel L_Tablica_Nazwa;
JLabel L_0, L_1, L_2, L_3, L_4, L_5, L_6, L_7, L_8, L_9, L_10, L_11, L_12, L_13, L_14, L_15;
JLabel L_Q4, L_Q3, L_Q2, L_Q1;
static JTextField T_00, T_01, T_02, T_03, T_10, T_11, T_12, T_13, T_20, T_21, T_22, T_23, T_30, T_31, T_32, T_33, T_40, T_41, T_42, T_43, T_50, T_51, T_52, T_53, T_60, T_61, T_62, T_63, T_70, T_71, T_72, T_73, T_80, T_81, T_82, T_83, T_90, T_91, T_92, T_93, T_100, T_101, T_102, T_103, T_110, T_111, T_112, T_113, T_120, T_121, T_122, T_123, T_130, T_131, T_132, T_133, T_140, T_141, T_142, T_143, T_150, T_151, T_152, T_153;
JTextField Pole[][];
public static void main(String[] args)
{
}
public Tabela_16x4()
{
// Indeks Wierszy
L_0 = new JLabel(" 0");
L_1 = new JLabel(" 1");
L_2 = new JLabel(" 2");
L_3 = new JLabel(" 3");
L_4 = new JLabel(" 4");
L_5 = new JLabel(" 5");
L_6 = new JLabel(" 6");
L_7 = new JLabel(" 7");
L_8 = new JLabel(" 8");
L_9 = new JLabel(" 9");
L_10 = new JLabel("10");
L_11 = new JLabel("11");
L_12 = new JLabel("12");
L_13 = new JLabel("13");
L_14 = new JLabel("14");
L_15 = new JLabel("15");
// Indeks Kolumny
L_Q1 = new JLabel("Q1");
L_Q2 = new JLabel("Q2");
L_Q3 = new JLabel("Q3");
L_Q4 = new JLabel("Q4");
// POLA TABELI
T_00 = new JTextField("");
T_01 = new JTextField("");
T_02 = new JTextField("");
T_03 = new JTextField("");
T_10 = new JTextField("");
T_11 = new JTextField("");
T_12 = new JTextField("");
T_13 = new JTextField("");
T_20 = new JTextField("");
T_21 = new JTextField("");
T_22 = new JTextField("");
T_23 = new JTextField("");
T_30 = new JTextField("");
T_31 = new JTextField("");
T_32 = new JTextField("");
T_33 = new JTextField("");
T_40 = new JTextField("");
T_41 = new JTextField("");
T_42 = new JTextField("");
T_43 = new JTextField("");
T_50 = new JTextField("");
T_51 = new JTextField("");
T_52 = new JTextField("");
T_53 = new JTextField("");
T_60 = new JTextField("");
T_61 = new JTextField("");
T_62 = new JTextField("");
T_63 = new JTextField("");
T_70 = new JTextField("");
T_71 = new JTextField("");
T_72 = new JTextField("");
T_73 = new JTextField("");
T_80 = new JTextField("");
T_81 = new JTextField("");
T_82 = new JTextField("");
T_83 = new JTextField("");
T_90 = new JTextField("");
T_91 = new JTextField("");
T_92 = new JTextField("");
T_93 = new JTextField("");
T_100 = new JTextField("");
T_101 = new JTextField("");
T_102 = new JTextField("");
T_103 = new JTextField("");
T_110 = new JTextField("");
T_111 = new JTextField("");
T_112 = new JTextField("");
T_113 = new JTextField("");
T_120 = new JTextField("");
T_121 = new JTextField("");
T_122 = new JTextField("");
T_123 = new JTextField("");
T_130 = new JTextField("");
T_131 = new JTextField("");
T_132 = new JTextField("");
T_133 = new JTextField("");
T_140 = new JTextField("");
T_141 = new JTextField("");
T_142 = new JTextField("");
T_143 = new JTextField("");
T_150 = new JTextField("");
T_151 = new JTextField("");
T_152 = new JTextField("");
T_153 = new JTextField("");
System.out.print("Jestem w konstruktorze");
}
public void Tworz_Tabele( int wier, int K_Shift, String napis)
{
System.out.print("Jestem fun. Tworz Tabele");
L_Tablica_Nazwa = new JLabel(napis);
L_Tablica_Nazwa.setBounds(328+K_Shift, wier-50 ,200,20);
L_Tablica_Nazwa.setForeground(Color.BLUE);
add(L_Tablica_Nazwa);
// Wypisuje indeksy wierszy
JLabel L_Tab_Y[] = { L_0, L_1, L_2, L_3, L_4, L_5, L_6, L_7, L_8, L_9, L_10, L_11, L_12, L_13, L_14, L_15 };
for( int i=0; i<16; i++)
{
L_Tab_Y[i].setBounds(300+K_Shift,wier,200,20);
add(L_Tab_Y[i]);
wier+=20;
}
// Wypisuje indeksy kolumn
JLabel L_Tab_X[] = { L_Q4, L_Q3, L_Q2, L_Q1 };
for( int i=0, kol=325+K_Shift; i<4; i++, kol+=25) // Dodaje numer kolumny w zaleznosci od k
{
L_Tab_X[i].setBounds(kol,wier-350,200,20);
add(L_Tab_X[i]);
}
}
void Wypelnij_Tabele( int wier, int K_Shift, int w, int k, char bin[][])// wiersz, kolumna
{
System.out.print("Jestem w fun Wypelnij Tabele");
JTextField Pole[][] = { // pola Tabeli umieszczone w tablicy
{ T_00, T_01, T_02, T_03 },
{ T_10, T_11, T_12, T_13 },
{ T_20, T_21, T_22, T_23 },
{ T_30, T_31, T_32, T_33 },
{ T_40, T_41, T_42, T_43 },
{ T_50, T_51, T_52, T_53 },
{ T_60, T_61, T_62, T_63 },
{ T_70, T_71, T_72, T_73 },
{ T_80, T_81, T_82, T_83 },
{ T_90, T_91, T_92, T_93 },
{ T_100, T_101, T_102, T_103 },
{ T_110, T_111, T_112, T_113 },
{ T_120, T_121, T_122, T_123 },
{ T_130, T_131, T_132, T_133 },
{ T_140, T_141, T_142, T_143 },
{ T_150, T_151, T_152, T_153 },
};
// Wypelnia tabele Polami JTextField oraz wpisuje dane
for(int i=0; i<w; i++)
{
for(int j=0, kol=325+K_Shift; j<k; j++, kol+=25)
{
Pole[i][j].setBounds(kol,wier,25,20);
Pole[i][j].setText(String.valueOf(bin[i][j]));
add(Pole[i][j]);
}
wier+=20;
}
}
}
poprawienie tagów wątku - furious programming