Вопросы по Java

Статус: Offline
Реєстрація: 29.07.2009
Повідом.: 54
Вопросы по Java

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

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

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

Вкладення

  • 1.jpg
    1.jpg
    16.4 КБ · Перегляди: 129
Java на десктопе? Не, не слышал. Бросай, пока не поздно.
 
setPreferredSize, setMaxSize, setMinSize нужно использовать. setSize устанавливает сам компоновщик при прорисовке.
 
Swing сейчас практически не используется, для общего развития можно побаловаться но лучше бы налегал на ядро джавы и широкоизвестные фрейморки, такие как Spring, Hibernate. Также полезно будет прочитать про сервлеты - это фундамент любого веб приложения на жаве.
Из видеоуроков мне оч. понравилось доклады из этой серии
 
спасибо всем!
действительно, использовал setPreferredSize, получилось.
и спасибо за ссылку, я ее раньше уже нагуглил, оч понравилось, сейчас на 13 уроке, хотя тема по дженерики пока не очень понятна...
 
Нет в жабе нормальных generics ;)
 
хотя тема по дженерики пока не очень понятна...

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

Нет в жабе нормальных 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
 
Человек спросил, чем плохи generics из жабы.
Если кратко - type erasure'ом плохи.
 
Да хотя бы этим:

Код:
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

ты зачем процитировал рукипедию?
 
В общем, да. Можно было не копипастить, чем ущербны жабьи generics.
Достаточно линка на вики.
 
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
 
Попробуйте порефакторить жаба и плюсовый код, и поймете, кто из них неоднозначный. Ну а про паскаль я вообще молчу.
 
Назад
Зверху Знизу