Збір на FPV для «Птахів Мадяра»
  • Автор теми Автор теми Garilla
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 29.07.2009
Повідом.: 50
Вопросы по Java

Здравствуйте!
Начал осваивать Java по разным книгам / видеокурсам / программам и при освоении полезли баги и вопросы как тараканы )) Гуглить пытаюсь, но пока опыта немного, особенно того, что касается отладки прог.
Если не в лом, может кто по доброте душевной подскажет решение такого вопроса

"1. При реализации графического интерфейса для приложения копирования файлов имя копируемого файла и имя конечной директории выбирается через JFileChooser, прописывается в соответствующем JTextField (менял на JF и выводиться на экран. Выбран менеджер расположения GridLayout(2,3) на главном окне BorderLayout. У меня вопрос - как возможно сделать так, чтобы поле JTextField изменялось бы в зависимости от значения, полученного через chooser1.getSelectedFile().getPath() (ну максимум ограничить максимальное значение тока, если string > = 50? то тода пусть будет 50 например)

Кста, выполнение text1.setSize(50, text1.getHeight()); не влияет на ширину поля text1... Наверное из-за предустановок менеджера расположения?
 

Вкладення

  • 1.webp
    1.webp
    4.8 КБ · Перегляди: 170
Swing сейчас практически не используется, для общего развития можно побаловаться но лучше бы налегал на ядро джавы и широкоизвестные фрейморки, такие как Spring, Hibernate. Также полезно будет прочитать про сервлеты - это фундамент любого веб приложения на жаве.
Из видеоуроков мне оч. понравилось доклады из этой серии
 
спасибо всем!
действительно, использовал setPreferredSize, получилось.
и спасибо за ссылку, я ее раньше уже нагуглил, оч понравилось, сейчас на 13 уроке, хотя тема по дженерики пока не очень понятна...
 
хотя тема по дженерики пока не очень понятна...

лучше с этим разбираться, чем со свингом

Нет в жабе нормальных generics ;)

а где есть? :) Чем вам джавовские не угодили? по моему нормальные дженерики. Правда я других не использовал, потому могу быть необьективен
 
Да хотя бы этим:

Код:
List<Integer> a = new ArrayList<Integer>();
List<String> b = new ArrayList<String>();
System.out.print(a.getClass() == b.getClass());
Выводит true.
Далее, вот этот кусок кода вообще не компилируется, жалуется "unexpected type":

Код:
public class GenericTest<T>  {
    public void CreateT() {
        T item = new T();
    }
    public void method(Object arg) {
        if(arg instanceof T) {
            return;
        }
    }
}
 
Да хотя бы этим:

Код:
List<Integer> a = new ArrayList<Integer>();
List<String> b = new ArrayList<String>();
System.out.print(a.getClass() == b.getClass());
Выводит true.

Далее, вот этот кусок кода вообще не компилируется, жалуется "unexpected type":

Код:
public class GenericTest<T>  {
    public void CreateT() {
        T item = new T();
    }
    public void method(Object arg) {
        if(arg instanceof T) {
            return;
        }
    }
}

да вы батенька знаете толк в извращениях :D
 
Да хотя бы этим:

Код:
List<Integer> a = new ArrayList<Integer>();
List<String> b = new ArrayList<String>();
System.out.print(a.getClass() == b.getClass());
Выводит true.
Далее, вот этот кусок кода вообще не компилируется, жалуется "unexpected type":

Код:
public class GenericTest<T>  {
    public void CreateT() {
        T item = new T();
    }
    public void method(Object arg) {
        if(arg instanceof T) {
            return;
        }
    }
}

https://en.wikipedia.org/wiki/Generics_in_Java#Problems_with_type_erasure

ты зачем процитировал рукипедию?
 
Type erasure, говорите?

PHP:
public class GenericTest<T> {
    private Class<T> clazz;
    public GenericTest(Class<T> clazz) { this.clazz = clazz; }
    public T CreateT() {
        try { return clazz.newInstance();
        } catch (IllegalAccessException | InstantiationException e) 
        { throw new RuntimeException(e); }
    }
    public String method(Object arg) {
        if (clazz.isInstance(arg)) return "compatible"; 
        else return "incompatible";
    }
    public static void main(String[] args) {
        GenericTest<String> gt = new GenericTest<String>(String.class);
        System.out.println(gt.CreateT().getClass());
        System.out.println(gt.method(""));
        System.out.println(gt.method(new RuntimeException()));
    }
}


>> class java.lang.String
>> compatible
>> incompatible
 
Вполне нормальные женерики, для 99% случаев отлично справляются со своей целью. А изврат искать , так можно в любом месте найти.



Просто нужно понимать что женерики как фича существуют только на уровне компиляции, после же все они заменяются на приведение типов.
 
Останнє редагування:
Да хотя бы этим:

Код:
List<Integer> a = new ArrayList<Integer>();
List<String> b = new ArrayList<String>();
System.out.print(a.getClass() == b.getClass());
Выводит true.

Далее, вот этот кусок кода вообще не компилируется, жалуется "unexpected type":

Код:
public class GenericTest<T>  {
    public void CreateT() {
        T item = new T();
    }
    public void method(Object arg) {
        if(arg instanceof T) {
            return;
        }
    }
}
Как по мне все логично :)
 
Да, логичнее некуда. Куча дымящегося legacy дерьма, которое и поддерживать нельзя, и выкинуть жалко.
Если честно - такого поганого, неоднозначного языка, как java, я еще не встречал(активно применял c++, pascal, с#, java). Java по ущербности в моих глазах опередила даже ненавистные мне плюсы, у которых есть некий стандарт, в котором половина описана как "undefined behavior" и "implementation defined". Впереди по ущербности и непродуманности в моих глазах стоит только оракли ПЛ/СКЛ.
А напоследок цитата: "Java is designed to be understandable by brain-damaged people." (c) VSL
 
Назад
Зверху Знизу