Вход на сайт
Komponenty na GUI uznat' (Java)
98
10.07.07 17:50
Привет Спициалисты,
у меня проблема в том, мне нужно узнат какие Компоненты находятса на GUI и кание Компоненты находятса в етих компонентах и так далие.....
вот я так попробывала но я ничего не понимаю....
помогите пожалуиста
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;
public class Scan2 {
public static void main(String[] args) {
Test mir = new Test();
Frame frame = new Test();
for (int i =0; i< frame.getComponentCount(); i++){
Component comp = frame.getComponent(i);
System.out.println("Component:"+comp);
System.out.println(frame);
}
mir.pack();
scan(mir);
mir.show();
System.out.println("Hallo" + mir);
}
public static void scan(Test mir) {
// Liste aller Dateien und Unterverzeichnisse holen
Container ob = mir.getParent();
if (ob == null || ob.getComponentCount() < 1) {
return;
}
for (int i = 0; i < ob.getComponentCount(); i++) {
Test kind = new Test();
if (mir == ob.getParent()) {
scan(mir); // rekursiv ins Unterverzeichnis verzweigen
System.out.println("Eltern" + mir);
} else {
// entry ist ein Kind
System.out.println("kind(er)" + kind);
}
}
}
}
Vydaöt na Konsole:
Component:java.awt.Panel[panel0,0,0,0x0,invalid,layout=java.awt.BorderLayout]
screen.Test[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=mit Komponenten,resizable,normal]
Halloscreen.Test[frame1,0,0,172x113,invalid,layout=java.awt.BorderLayout,title=mit Komponenten,resizable,normal]
у меня проблема в том, мне нужно узнат какие Компоненты находятса на GUI и кание Компоненты находятса в етих компонентах и так далие.....
вот я так попробывала но я ничего не понимаю....
помогите пожалуиста
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;
public class Scan2 {
public static void main(String[] args) {
Test mir = new Test();
Frame frame = new Test();
for (int i =0; i< frame.getComponentCount(); i++){
Component comp = frame.getComponent(i);
System.out.println("Component:"+comp);
System.out.println(frame);
}
mir.pack();
scan(mir);
mir.show();
System.out.println("Hallo" + mir);
}
public static void scan(Test mir) {
// Liste aller Dateien und Unterverzeichnisse holen
Container ob = mir.getParent();
if (ob == null || ob.getComponentCount() < 1) {
return;
}
for (int i = 0; i < ob.getComponentCount(); i++) {
Test kind = new Test();
if (mir == ob.getParent()) {
scan(mir); // rekursiv ins Unterverzeichnis verzweigen
System.out.println("Eltern" + mir);
} else {
// entry ist ein Kind
System.out.println("kind(er)" + kind);
}
}
}
}
Vydaöt na Konsole:
Component:java.awt.Panel[panel0,0,0,0x0,invalid,layout=java.awt.BorderLayout]
screen.Test[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=mit Komponenten,resizable,normal]
Halloscreen.Test[frame1,0,0,172x113,invalid,layout=java.awt.BorderLayout,title=mit Komponenten,resizable,normal]
26.07.07 17:56
в ответ mamma_sita 10.07.07 17:50
Этта... Если честно - то в коде у вас творится страшное :)
Проще, наверное будет мне написать как бы я решил такое, а вы - посмотрите.
import java.awt.Container;
import java.awt.Component;
public class ContainerCrawler {
/**
* Метод, который нужно вызывать. Толком ничего не делает. Выдаёт сообщение в консоль и вызывает приватный метод, который и делает всю работу.
*/
public static void crawl(Container container){
System.out.println("Проверяем контейнер: "+container+"\n--- --- ---");
crawl(container, "");
}
/**
* Метод нужный исключительно для форматирования вывода в консоль. Чем глубже в иерархию контейнеров уходим - тем больше отступ слева.
*/
private static void crawl(Container container, String prefix){
System.out.print(prefix+"Kонтейнер: "+container);
if(container==null || container.getComponentCount() < 1){
System.println(" пуст.");
} else {
System.println(" содержит "+containet.getComponentCount()+" компонент.");
// Контейнер не пуст. Пробегаем по всем его компонентам и печатаем информацию о них. Если компонента тоже контейнер, вызываем метод рекурсивно.
for(Component child : container.getComponents()){
System.out.println(prefix+"--> "+child);
if(child instanceof Container){
// вызываем метод для вложенной компоненты, которая тоже контейнер. Удлиняем отступ слева для форматирования вывода.
crawl((Container) child, prefix+" ");
}
}
}
}
}
Проще, наверное будет мне написать как бы я решил такое, а вы - посмотрите.
import java.awt.Container;
import java.awt.Component;
public class ContainerCrawler {
/**
* Метод, который нужно вызывать. Толком ничего не делает. Выдаёт сообщение в консоль и вызывает приватный метод, который и делает всю работу.
*/
public static void crawl(Container container){
System.out.println("Проверяем контейнер: "+container+"\n--- --- ---");
crawl(container, "");
}
/**
* Метод нужный исключительно для форматирования вывода в консоль. Чем глубже в иерархию контейнеров уходим - тем больше отступ слева.
*/
private static void crawl(Container container, String prefix){
System.out.print(prefix+"Kонтейнер: "+container);
if(container==null || container.getComponentCount() < 1){
System.println(" пуст.");
} else {
System.println(" содержит "+containet.getComponentCount()+" компонент.");
// Контейнер не пуст. Пробегаем по всем его компонентам и печатаем информацию о них. Если компонента тоже контейнер, вызываем метод рекурсивно.
for(Component child : container.getComponents()){
System.out.println(prefix+"--> "+child);
if(child instanceof Container){
// вызываем метод для вложенной компоненты, которая тоже контейнер. Удлиняем отступ слева для форматирования вывода.
crawl((Container) child, prefix+" ");
}
}
}
}
}