marek

Reputacja

607

Głosów ogółem

użytkownik głosował za tyle razy
129
Użytkownik głosował przeciw tyle razy
8
  • Roczniak
  • Nauczyciel
  • Popularne pytanie
  • Student
  • Cofnął głos
  • Wsparcie
  • Redaktor
Prawdziwe imię
Marek
Członek od
2 lata, 4 miesiące
Ostatnio widziany
1 tydzień, 6 dni temu
Miejscowość
Gdańsk
Wiek
30

O mnie

Programista Java z Gdańska

Pytania: 11

Odpowiedzi: 34

  • 2010-04-05 20:54:00 Program pod Windows wysyłający wiadomość do strony WWW

    W Javie piszesz prostą aplikację w Swingu, następnie za pomocą Socket wysyłasz posta pod wskazany adres i odbierasz response, którego też bym na Twoim miejscu wyświetlił. Wygląd i tray to kosmetyka, więc ten fragment pomińmy. Aby wysłać coś POSTem pod wskazany adres, a potem odebrać response skorzystaj z tego przykładu:

    http://www.exampledepot.com/egs/java.net/PostSocket.html

    Sposób został przeze mnie już wykorzystany i działa.

    Pozdrawiam serdecznie.

    edit:

    Napisałem program, o którym jak mi się wydaje mówiłeś. Oto link do niego (prawym i zapisz jako): HTTP POST Sender

    Aby uruchomić (jeżeli masz zainstalowaną Javę) klikasz dwukrotnie, bądź z linii komend piszesz:

    java -jar httppostsender.jar
    

  • 2012-02-23 08:50:18 Wywoływanie metody dla ementów vectora.

    To jest pytanie z absolutnych podstaw Javy. Rozwiązanie jest proste. Widzę, że masz 3 różne klasy: TypA, TypB, TypC. Wszystkie te klasy powinny implementować interfejs mniej więcej taki:

    public interface Typ {
        public void metoda();
    }
    

    Czyli przykładowo TypA wyglądać będzie następująco:

    public class TypA implements Typ {
        @Override
        public void metoda() {
            System.out.println("test");
        }
    }
    

    I teraz wspomniany fragment kodu będzie wyglądał tak:

    TypA ob1;
    TypA ob2;
    TypB ob3;
    TypC ob4;
    Vector obs = new Vector();
    // dodawanie obiektów do vectora
    for(Enumeration e = obs.elements(); e.hasMoreElements(); ) {
         Typ o = (Typ) e.nextElement();
         o.metoda();
    }
    

    Poza tym dawciobiel ma sporo racji, tylko nie złapał tego co tak naprawdę chcesz zrobić. Życie.

    Pozdrawiam, Marek

    PS. Nie chciało mi się sprawdzić kodu czy działa, ale działać musi. ;)

    edit:

    PS2. Czyli zamiast rzutować na Typ musisz obie zrzutować na klasę Layer i będzie ok.

    Layer o = (Layer) e.nextElement();

  • 2010-01-15 07:32:22 Jaki jest Twój ulubiony kawał programistyczny?

    A group of computer science majors were listening to a lecture about Java programming at a university. After the lecture one of the men leaned over and grabbed a women's breast. Woman: "Hey! Thats private OK!?" The man hesitated for a second looking confused. Man: "But I thought we were in the same class?"

  • 2010-01-18 10:30:54 Sposób ustawiania elementów na formie

    Istnieją cztery sposoby rozmieszczenia DIVów przy użyciu CSS: static, absolute, relative oraz fixed.

    static - oznacza umieszczanie elementów wewnątrz bloków, w których się znajdują.

    absolute - oznacza rozmieszczanie względem okna przeglądarki

    relative - oznacza umieszczenie elementu relatywnie do miejsca, w którym znalazłby się normalnie

    fixed - oznacza stałe miejsce, które nie zmienia się pomimo scrollowania dokumentu

    Jest jeden bardzo ważny trik: jeżeli otoczysz pozostałe divy innym divem, któremu nadasz typ absolute to te divy wewnątrz będą rozmieszczane już względem tego zewnętrznego. Dlatego ja ułożyłem divy na swojej stronie używając praktycznie tylko rozmieszczenia absolute.

    Reasumując, najpierw tworzysz diva zewnętrznego, któremu position ustawiasz na absolute, a potem te wewnątrz ustawiasz jak lecą, bądź zmieniasz im miejsce poprzez ustawienie pozycji również na absolute i wskazujesz współrzędne względem diva zewnętrznego. To działa. :) Jeżeli potrzebujesz elementy ruchome, jak np. stopka zawsze widoczna albo jakiś header zawsze widoczny to stosujesz fixed, ale IE się mota przy takim oznaczeniu.

    Pozdrawiam.

    PS. Bardzo ładnie jest to opisane w książce "HTML, XHTML i CSS Biblia" dostępnej na Helionie.

  • 2010-01-28 13:45:39 Czy macie jakieś dolegliwości związane z długim siedzeniem przed

    Nie używam okularów, ani nie mam żadnych dolegliwości poza bólem nadgarstka, który zniknął, gdy zacząłem stosować podkładkę pod nadgarstek. Okulary z antyrefleksem mam, ale nie lubię ich nosić i nie noszę, zwłaszcza, że nie mam nawet najmniejszej wady wzroku.

    Jest jednak niedogodność - siedzący tryb pracy wiąże się z małym zużyciem energii, więc konieczna jest dobra dieta. :)

    A żona faktycznie czasami krzyczy, ale to chyba bez względu na zawód.

  • 2010-01-28 12:51:40 Jaki sprzęt do programowania ??

    Klawiatura Logitech Internet 350. Na każdym moim pracodawcy wymusiłem zakup tego modelu do mojego stanowiska pracy. W domu też taką mam. Dla mnie idealny układ, niezbyt głośna i do tego dobrze dobrany opór przycisków.

    Co do myszki to nie jestem wybredny - pracuję na czymkolwiek co ma 3 przyciski i kółko. Oczywiście preferuję laserowe, ale optyczne też mi nie przeszkadzają jeżeli mam odpowiednią podkładkę. Stary typ z kulkami odpada.

    Monitor koniecznie LCD, co najmniej 19 cali, z ostrym obrazem.

  • 2010-02-20 00:09:33 Co zamiast PHP?

    Zastanawiam się czy to specyfika tego portalu czy może przypadek, że Java stanowi temat tabu. Ja osobiście programuję webowo w Javie (J2EE). Java to gigant, za którym stoją takie firmy jak IBM czy Oracle (teraz już właściciel firmy Sun Microsystems). Materiałów jest mnóstwo, a narzędzia i serwery w większości są zupełnie darmowe (czyli nie musisz korzystać z żadnych płatnych rozwiązań, aby stworzyć pełnowartościową aplikację webową - jedyny koszt to sprzęt :) ). W Javie, wbrew powszechnej opinii osób, które mają o niej blade pojęcie, można również tworzyć dość fajne aplikacje okienkowe, ale do tego konieczne jest odejście od wbudowanych Swinga oraz AWT i skorzystanie z SWT lub RCP (ale to tak na marginesie). Do tego w Javie możesz tworzyć dynamiczne strony za pomocą takich narzędzi jak GWT czy ECHO2. Wygoogluj sobie to i sprawdź o co dokładnie chodzi. I w końcu dochodzi JavaFX dla której logikę możesz pisać w zwykłej Javie natomiast widok za pomocą jej języka skryptowego, który akurat mi nie za bardzo przypadł do gusty. JavaFX zapewnia podobne możliwości jak Flash czy SilverLight, a do tego by ją wyświetlić na stronie wystarczy zainstalowane zwykłe JRE, które jest dość powszechne (potrzebne do czatowania na polskich portalach albo do zabawy na kurnik.pl).

    Poza tym Java, RoR czy Python nie zamykają Cię w światku Microsoftu z jego kosztownymi rozwiązaniami, co uważam za przewagę tej trójki nad .NET.

    A jeśli chodzi o wplatanie XHTML w strony na serwerze J2EE to wystarczy deklaracja w pliku .jsp albo .jsf. Działa to mnie więcej tak, że tworzysz pliki stron z trochę zmienioną składnią i później to jest wyświetlane jako zwykły XHTML. Zresztą rozumiesz jak działają skrypty PHP, więc np. jsp działa bardzo podobnie, ale np. po submicie wykonujesz operacje w normalnej Javie i potem wyświetlasz ponownie stronę JSP. Reasumując:

    strona z XHTML jako JSP --> logika aplikacji --> kolejna strona JSP

    Tak to wygląda w bardzo uproszczony sposób. Pozdrawiam!

  • 2010-04-09 19:37:34 Jak rozmieścić JPanele w JScrollPane?

    Moim zdaniem pewny, sprawdzony i działający sposób to wsadzić w JScrollPane nowy JPanel:

    private final JPanel contactsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    private final JScrollPane contactsScrollPane = new JScrollPane(contactsPanel);
    

    Potem dodajesz te panele z kontaktami do contactsPanel sumując ich wysokości i zmieniając odpowiednio wysokość contactsPanel tak, aby pomieścił wszystkie contactPanele.

    Dosłownie zawsze robiłem to tak:

    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.util.ArrayList;
    import java.util.Collection;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    
    @SuppressWarnings("serial")
    public class MainFrame extends JFrame {
    
        private final Collection<String> contacts = new ArrayList<String>();
    
        private final JPanel contactsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        private final JScrollPane contactsScrollPane = new JScrollPane(contactsPanel);
    
        public MainFrame() {
            setTitle("Contacts");
            //setResizable(false);
            setSize(300, 140);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLayout(new FlowLayout(FlowLayout.CENTER));
    
            fillContacts();
    
            contactsScrollPane.setPreferredSize(new Dimension(280, 90));
    
            //contactsScrollPane.getViewport().add(contactsPanel);
    
            int height = 0;
            for (String name : contacts) {
                JPanel cp = new JPanel(new FlowLayout(FlowLayout.LEFT));
                cp.setPreferredSize(new Dimension(260, 20));
                cp.add(new JLabel(name));
                contactsPanel.add(cp);
                height += 27;
            }
    
            contactsPanel.setPreferredSize(new Dimension(260, height));
    
            add(contactsScrollPane);
        }
    
        private void fillContacts() {
            contacts.add("Jan Kowalski");
            contacts.add("Adam Nowak");
            contacts.add("Anna Kowalska");
            contacts.add("Grzegorz Nowakowski");
            contacts.add("Barbara Malinowska");
            contacts.add("Weronika Kwiatkowska");
            contacts.add("Mariusz Borek");
        }
    }
    

    Jeśli masz jakieś pytania to komentuj moją odpowiedź.

    Pozdrawiam, Marek

  • 2010-04-23 13:41:01 java- podział tablicy 2D

    Moim zdaniem przeoczyłeś klasę java.util.Arrays i jej metody copyOf oraz copyOfRange. Tam jest wszystko czego potrzebujesz.

    A co do drugiej części to wydaje mi się, że nie do końca zrozumiałeś jak działają tablice w Javie. Tablica wielowymiarowa to inaczej tablica tablic.

    Aby to zrozumieć, proponuję, abyś wykonał sobie ten kod:

    char[][] chars = new char[2][2];
    
    chars[0][0] = 'a';
    chars[0][1] = 'b';
    chars[1][0] = 'c';
    chars[1][1] = 'd';
    
    char[] charsAB = chars[0];
    char[] charsCD = chars[1];
    
    System.out.println(chars[0]);
    System.out.println(charsAB);
    System.out.println(new char[] {'a', 'b'});
    System.out.println(Arrays.equals(new char[] {'a', 'b'}, charsAB));
    
    System.out.println(chars[1]);
    System.out.println(charsCD);
    System.out.println(new char[] {'c', 'd'});
    System.out.println(Arrays.equals(new char[] {'c', 'd'}, charsCD));
    

    Pozdrawiam.

    edit: Kolega przemelek bardzo słusznie zauważył, że metody copyOf oraz copyOfRange weszły dopiero od wersji 1.6 JDK. Dlatego jeżeli używasz JDK w wersjach 1.5 lub 1.4 to nie będziesz miał tych metod, ale możesz znaleźć ich źródła w sieci i umieścić je w Twoim kodzie. :)

  • 2012-02-07 11:48:20 Java - klasa zwracająca obiekt.

    public class NoLabelSI extends StringItem {
    
       public NoLabelSI(String txt) {
           super(null, txt);
       }
    }