<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem jframe</title>
<link>https://forum.pasja-informatyki.pl/tag/jframe</link>
<description>Powered by Question2Answer</description>
<item>
<title>Zamknięcie okna JFrame</title>
<link>https://forum.pasja-informatyki.pl/564477/zamkniecie-okna-jframe</link>
<description>Hej, chodzi mi o graficzny interfejs użytkownika i stosowanie elementu JFrame.&lt;br /&gt;
&lt;br /&gt;
Aplikacja wyświetla takie okno, na niej rożne elementy w tym przycisk 'Dodaj', który powoduje wyświetlenie nowego okna JFrame z polem do wpisania tekstu, i przyciskiem np. &amp;quot;dodaj i zamknij&amp;quot;. Chciałbym aby po kliknięciu tego przycisku nowo powstała ramka została zamknięta i została tylko ramka główna.&lt;br /&gt;
&lt;br /&gt;
W jaki sposób mogę coś takiego zrobić?&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za odpowiedź, pozdrawiam wszystkich! &amp;nbsp;;)</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/564477/zamkniecie-okna-jframe</guid>
<pubDate>Sun, 10 Apr 2022 15:46:15 +0000</pubDate>
</item>
<item>
<title>Java Swing: Zamknięcie jednego okna</title>
<link>https://forum.pasja-informatyki.pl/385269/java-swing-zamkniecie-jednego-okna</link>
<description>Jak zamknąć pojedyncze okno, (nie całą aplikacje) tak by zostało całkowicie usunięte z pamięci?&lt;br /&gt;
&lt;br /&gt;
Metoda dispose() jest nieprawidłowa.</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/385269/java-swing-zamkniecie-jednego-okna</guid>
<pubDate>Tue, 09 Oct 2018 16:05:53 +0000</pubDate>
</item>
<item>
<title>Obsługa przycisku z innej klasy</title>
<link>https://forum.pasja-informatyki.pl/297198/obsluga-przycisku-z-innej-klasy</link>
<description>

&lt;p&gt;Chciałem rozdzielić swój program na dwie klasy, tak aby w jednej były wszystkie elementy GUI, w drugiej ich obsługa. Jak mogę w drugiej klasie odwołać się do przycisku? Do tej pory po prostu klikałem w NetBeansie na przycisk i przenosiło mnie do automatycznie utworzonej metody:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
    private void ButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }    &lt;/pre&gt;



&lt;p&gt;Jak mogę obsłużyć ten przycisk z innej klasy?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/297198/obsluga-przycisku-z-innej-klasy</guid>
<pubDate>Thu, 26 Oct 2017 15:54:32 +0000</pubDate>
</item>
<item>
<title>Jak otworzyć nowe okno po kliknięciu przycisku w JFrame?</title>
<link>https://forum.pasja-informatyki.pl/295815/jak-otworzyc-nowe-okno-po-kliknieciu-przycisku-w-jframe</link>
<description>Mam mały program okienkowy mainFrame.java, chciałem to trochę przerobić - utworzyłem startFrame.java, tam są dwa przyciski, jak po kliknięciu jednego z przycisków wywołać to okno, które jest w mainFrame.java?</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/295815/jak-otworzyc-nowe-okno-po-kliknieciu-przycisku-w-jframe</guid>
<pubDate>Sun, 22 Oct 2017 12:33:29 +0000</pubDate>
</item>
<item>
<title>Umieszczenie JCheckBox w konkretnym miejscu</title>
<link>https://forum.pasja-informatyki.pl/264328/umieszczenie-jcheckbox-w-konkretnym-miejscu</link>
<description>

&lt;p&gt;Witam!&lt;/p&gt;



&lt;p&gt;Od niedawna uczę się javy i robiąc aktualnie jeden projekt, napotkałem pewien problem. Mianowicie potrzebuję dodać do klasy CheckBoxy, ale nie potrafię określić ich konkretnego położenia. Wygląda to tak:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
public Dodawanie() {
		super();
		this.setSize(1000, 400);
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension dim = tk.getScreenSize();
		int xPos = (dim.width / 2) - (this.getWidth() / 2);
		int yPos = (dim.height / 2) - (this.getHeight() / 2);
		this.setLocation(xPos, yPos);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle(&quot;test&quot;);
		JPanel panel = new JPanel();

		przycisk1 = new JButton(&quot;Dodaj&quot;);
		oknoTekstowe1 = new JTextField(&quot;test&quot;, 10);
		oknoTekstowe2 = new JTextField(&quot;test&quot;, 10);

		w1 = new JCheckBox(&quot;test1&quot;);
		w1.setSelected(false);
		w2 = new JCheckBox(&quot;test2&quot;);
		w2.setSelected(false);
		w3 = new JCheckBox(&quot;test3&quot;);
		w3.setSelected(false);
		w4 = new JCheckBox(&quot;test4&quot;);
		w4.setSelected(false);
		w5 = new JCheckBox(&quot;test5&quot;);
		w5.setSelected(false);
		w6 = new JCheckBox(&quot;test6&quot;);
		w6.setSelected(false);
		w7 = new JCheckBox(&quot;test7&quot;);
		w7.setSelected(false);

		przycisk1.addActionListener(this);

		panel.add(oknoTekstowe1);
		panel.add(oknoTekstowe2);
		panel.add(przycisk1);
		panel.add(w1);
		panel.add(w2);
		panel.add(w3);
		panel.add(w4);
		panel.add(w5);
		panel.add(w6);
		panel.add(w7);
		this.add(panel);
		this.setVisible(true);

	}&lt;/pre&gt;



&lt;p&gt;Jest to konstruktor klasy która dziedziczy po JFrame. Okna tekstowe i przycisk ładnie się wyświetlają, Checkboxy również, tylko że wszystko wyświetla się w jednym rzędzie, jednej linii. Próbowałem za pomocą setLocation(x,y) ustawić położenie checkboxów, jednak nic to nie dawało, żadnej różnicy. Z góry dziękuję za pomoc i ewentualne wytłumaczenie jeśli coś robię bardzo nie tak jak powinno się robić.&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/264328/umieszczenie-jcheckbox-w-konkretnym-miejscu</guid>
<pubDate>Fri, 23 Jun 2017 16:55:48 +0000</pubDate>
</item>
<item>
<title>JFrame - licencja</title>
<link>https://forum.pasja-informatyki.pl/224525/jframe-licencja</link>
<description>Czy tworząc programy okienkowe przy użyciu JFrame mogę używać go w celach komercyjnych lub/i z zamkniętym kodem?&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=c345Kng21h0&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=c345Kng21h0&lt;/a&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/224525/jframe-licencja</guid>
<pubDate>Tue, 07 Feb 2017 12:28:12 +0000</pubDate>
</item>
<item>
<title>java uruchamianie jFrame podczas działania innego jFrame</title>
<link>https://forum.pasja-informatyki.pl/203514/java-uruchamianie-jframe-podczas-dzialania-innego-jframe</link>
<description>

&lt;p&gt;Pojawił się kolejny problem. Otóż gdy próbuję uruchomić klasę server, uruchamia się ona normalnie, jednak potem chcę uruchomić klasę klient i tu pojawia się problem, ponieważ nie pojawia się gui. Gdy uruchamiam klasy w odwrotną stronę, wszystko działa poprawnie.&lt;/p&gt;



&lt;p&gt;Client&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package com.jarek.chat;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.net.Socket;

/**
 * Created by Jarek on 09.11.16.
 */
public class Client extends JFrame implements ActionListener{

    private JTextArea msgArea = new JTextArea(10, 32);
    private JTextField msgText = new JTextField();
    private JPanel btnPanel = new JPanel();
    private JButton msgSend = new JButton(&quot;Send message!&quot;);
    private JButton clearArea = new JButton(&quot;Clear message area!&quot;);
    private JButton fileSend = new JButton(&quot;Send file!&quot;);

    static Socket s;
    static DataInputStream dataInputStream;
    static DataOutputStream dataOutputStream;

    public Client() {

        msgArea.setEditable(false);
        msgArea.setWrapStyleWord(true);
        msgArea.setLineWrap(true);

        msgSend.addActionListener(this);
        clearArea.addActionListener(this);
        fileSend.addActionListener(this);

        Container container = getContentPane();
        container.add(new JScrollPane(msgArea), BorderLayout.CENTER);
        btnPanel.setLayout(new FlowLayout());
        btnPanel.setPreferredSize(new Dimension(200,200));
        btnPanel.add(msgSend, BorderLayout.NORTH);
        btnPanel.add(clearArea, BorderLayout.SOUTH);
        btnPanel.add(fileSend, BorderLayout.WEST);
        container.add(btnPanel, BorderLayout.EAST);
        container.add(msgText, BorderLayout.SOUTH);
        setTitle(&quot;Client&quot;);
//        panelMain.add(container);
        pack();
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                int choice = JOptionPane.showConfirmDialog(container, &quot;Exit?&quot;, &quot;Close CHAT&quot;,
                        JOptionPane.OK_OPTION);
                if (choice == JOptionPane.OK_OPTION)
                    System.exit(0); // do dopracowania
            }
        });
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if(e.getSource() == msgSend) {

            try {

                String msgOut;
                msgOut = msgText.getText().trim();
                dataOutputStream.writeUTF(msgOut);
                msgText.setText(&quot;&quot;);

            } catch (Exception i) {
                JOptionPane.showMessageDialog(this, &quot;Send message error! Check your &quot; +
                        &quot;connection or if server is closed!&quot;, &quot;Send error!&quot;, JOptionPane.ERROR_MESSAGE);
            }
        }
        else if(e.getSource() == clearArea) {

            msgArea.setText(&quot;&quot;);

        }
        else if(e.getSource() == fileSend) {

            SendFile sendFile = new SendFile(this);

        }

    }

    private void listen()  {

        String msgIn = &quot;&quot;;

        try {

            s = new Socket(&quot;127.0.0.1&quot; , 1220);

            dataInputStream = new DataInputStream(s.getInputStream());
            dataOutputStream = new DataOutputStream(s.getOutputStream());

            while(msgIn!=&quot;exit&quot;) {

                msgIn = dataInputStream.readUTF();
                System.out.println(msgIn);
                msgArea.setText(msgArea.getText() + &quot;\nServer: &quot; + msgIn);
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, &quot;Receive message error! Check your &quot; +
                    &quot;connection!&quot;, &quot;Receive error!&quot;, JOptionPane.ERROR_MESSAGE);
        }

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -&amp;gt; {
            Client clientFrame = new Client();
            clientFrame.listen();
        });
    }

    public void setFile(File file) {

        File file1 = file;
        msgArea.append(file1.getName() + &quot;\n&quot;);
    }
}
&lt;/pre&gt;



&lt;p&gt;server:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package com.jarek.chat;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by Jarek on 09.11.16.
 */
public class Server extends JFrame implements ActionListener{

    private JTextField msgText = new JTextField();
    private JButton msgSend = new JButton(&quot;Send message!&quot;);
    private JPanel btnPanel = new JPanel();
    private JButton clearArea = new JButton(&quot;Clear message area!&quot;);
    private JTextArea msgArea = new JTextArea(10,32);
    private JButton fileSend = new JButton(&quot;Send file!&quot;);
    private File file;

    private static ServerSocket ss;
    private static Socket s;
    private static DataInputStream dataInputStream;
    private static DataOutputStream dataOutputStream;


    public Server() {

        msgArea.setEditable(false);
        msgArea.setWrapStyleWord(true);
        msgArea.setLineWrap(true);

        msgSend.addActionListener(this);
        clearArea.addActionListener(this);
        fileSend.addActionListener(this);

        Container container = getContentPane();
        container.add(new JScrollPane(msgArea), BorderLayout.CENTER);
        btnPanel.setLayout(new FlowLayout());
        btnPanel.setPreferredSize(new Dimension(200,200));
        btnPanel.add(msgSend, BorderLayout.NORTH);
        btnPanel.add(clearArea, BorderLayout.SOUTH);
        btnPanel.add(fileSend, BorderLayout.WEST);
        container.add(btnPanel, BorderLayout.EAST);
        container.add(msgText, BorderLayout.SOUTH);
        setTitle(&quot;Server&quot;);
        pack();
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                int choice = JOptionPane.showConfirmDialog(container, &quot;Exit?&quot;, &quot;Close CHAT&quot;,
                        JOptionPane.OK_OPTION);
                if (choice == JOptionPane.OK_OPTION)
                    System.exit(0); // do dopracowania
            }
        });
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {

        if(e.getSource() == msgSend) {

            try {

                String msgOut;
                msgOut = msgText.getText().trim();
                dataOutputStream.writeUTF(msgOut);
                msgText.setText(&quot;&quot;);

            } catch (Exception i) {
                JOptionPane.showMessageDialog(this, &quot;Send message error! Check your &quot; +
                        &quot;connection or if server is closed!&quot;, &quot;Send error!&quot;, JOptionPane.ERROR_MESSAGE);
            }
        }
        else if(e.getSource() == clearArea) {

            msgArea.setText(&quot;&quot;);

        }
        else if(e.getSource() == fileSend) {

            SendFile sendFile = new SendFile(this);

        }

    }

    private void listen() {

        String msgIn = &quot;&quot;;

        try {

            ss = new ServerSocket(1220); //number of server starting port
            s = ss.accept(); //accepting connections to server

            dataInputStream = new DataInputStream(s.getInputStream());
            dataOutputStream = new DataOutputStream(s.getOutputStream());

            while(msgIn != &quot;exit&quot;) {

                msgIn = dataInputStream.readUTF();
                System.out.println(msgIn);
                if(msgArea.getText()!=null)
                    msgArea.setText(msgArea.getText() + &quot;\n&quot; + msgIn);
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, &quot;Receive message error! Check your &quot; +
                    &quot;connection!&quot;, &quot;Receive error!&quot;, JOptionPane.ERROR_MESSAGE);
        }
    }

    public static void main(String[] args) {

        Server serverFrame = new Server();
        serverFrame.listen();
    }

    public void setFile(File file) {
        this.file = file;
    }
}
&lt;/pre&gt;



&lt;p&gt;Pomocy :)&lt;/p&gt;</description>
<category>Programowanie</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/203514/java-uruchamianie-jframe-podczas-dzialania-innego-jframe</guid>
<pubDate>Tue, 06 Dec 2016 11:34:24 +0000</pubDate>
</item>
<item>
<title>JAVA przesyłanie obiektu File pomiędzy JFrame</title>
<link>https://forum.pasja-informatyki.pl/203271/java-przesylanie-obiektu-file-pomiedzy-jframe</link>
<description>

&lt;p&gt;Dzień dobry,&lt;/p&gt;



&lt;p&gt;Mam następujący problem. Otóż piszę sobie prosty czat LAN. Wpadłem na pomysł, że dobrym pomysłem byłoby zaimplementowanie możliwości przesyłania plików. Napisałem klasę ClientFrame, z która zawiera GUI klienta czatu oraz klasę SendFileFrame służącą do wybierania pliku do wysłania. Poniżej wklejam kod klasy ClientFrame:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package com.jarek.chat;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.net.Socket;

/**
 * Created by Jarek on 09.11.16.
 */
public class ClientFrame extends JFrame implements ActionListener{
    private JPanel panelMain;
    private JTextArea msgArea = new JTextArea(10, 32);
    private JTextField msgText = new JTextField();
    private JPanel btnPanel = new JPanel();
    private JButton msgSend = new JButton(&quot;Send message!&quot;);
    private JButton clearArea = new JButton(&quot;Clear message area!&quot;);
    private JButton fileSend = new JButton(&quot;Send file!&quot;);
    private File file;
    private Container container = getContentPane();
    private SendFileFrame sendFile;


    static Socket s;
    static DataInputStream dataInputStream;
    static DataOutputStream dataOutputStream;

    public ClientFrame() {

        msgArea.setEditable(false);
        msgArea.setWrapStyleWord(true);
        msgArea.setLineWrap(true);

        msgSend.addActionListener(this);
        clearArea.addActionListener(this);
        fileSend.addActionListener(this);

        container.add(new JScrollPane(msgArea), BorderLayout.CENTER);
        btnPanel.setLayout(new FlowLayout());
        btnPanel.setPreferredSize(new Dimension(200,200));
        btnPanel.add(msgSend, BorderLayout.NORTH);
        btnPanel.add(clearArea, BorderLayout.SOUTH);
        btnPanel.add(fileSend, BorderLayout.WEST);
        container.add(btnPanel, BorderLayout.EAST);
        container.add(msgText, BorderLayout.SOUTH);
        setTitle(&quot;Client&quot;);
        pack();
        setVisible(true);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                int choice = JOptionPane.showConfirmDialog(container, &quot;Exit?&quot;, &quot;Close CHAT&quot;,
                        JOptionPane.OK_OPTION);
                if (choice == JOptionPane.OK_OPTION)
                    System.exit(0); // do dopracowania
            }
        });

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if(e.getSource() == msgSend) {

            try {

                String msgOut;
                msgOut = msgText.getText().trim();
                dataOutputStream.writeUTF(msgOut);
                msgText.setText(&quot;&quot;);

            } catch (Exception i) {
                JOptionPane.showMessageDialog(this, &quot;Send message error! Check your &quot; +
                        &quot;connection or if server is closed!&quot;, &quot;Send error!&quot;, JOptionPane.ERROR_MESSAGE);
            }
        }
        else if(e.getSource() == clearArea) {

            msgArea.setText(&quot;&quot;);

        }
        else if(e.getSource() == fileSend) {

           sendFile = new SendFileFrame(this);
           msgArea.append(&quot;Loaded file: &quot; + file.getName());

        }

    }

    private void listen()  {

        String msgIn = &quot;&quot;;

        try {

            s = new Socket(&quot;127.0.0.1&quot; , 1220);

            dataInputStream = new DataInputStream(s.getInputStream());
            dataOutputStream = new DataOutputStream(s.getOutputStream());

            while(msgIn!=&quot;exit&quot;) {

                msgIn = dataInputStream.readUTF();
                System.out.println(msgIn);
                msgArea.setText(msgArea.getText() + &quot;\nServer: &quot; + msgIn);
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, &quot;Receive message error! Check your &quot; +
                &quot;connection!&quot;, &quot;Receive error!&quot;, JOptionPane.ERROR_MESSAGE);
            }

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -&amp;gt; {
            ClientFrame clientFrame = new ClientFrame();
            clientFrame.listen();
        });
    }

    public void setFile(File file) {
        this.file = file;
    }
}
&lt;/pre&gt;



&lt;p&gt;Oraz SendFileFrame:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package com.jarek.chat;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

/**
 * Created by jarek on 12/2/16.
 */
public class SendFileFrame extends JPanel implements ActionListener {


    private JPanel panelMain;
    private JFileChooser fileChooser;
    private JButton selectFile = new JButton(&quot;Select file to send!&quot;);
    private JButton sendFile = new JButton(&quot;Send choosed file!&quot;);
    private JButton cancel = new JButton(&quot;Cancel!&quot;);
    private JTextField fileName;
    private JTextField filePath;
    private JPanel main;
    public File file = null;
    private static JFrame frame = new JFrame(&quot;Choose file to send!&quot;);
    private ClientFrame clientFrame;


    private void showGUI() {

        fileName = new JTextField();
        fileName.setEditable(false);
        filePath = new JTextField();
        filePath.setEditable(false);
        fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        selectFile.addActionListener(this);
        sendFile.addActionListener(this);
        cancel.addActionListener(this);
        panelMain = new JPanel();
        panelMain.add(selectFile);
        panelMain.add(sendFile);
        panelMain.add(cancel);
        add(panelMain, BorderLayout.PAGE_START);
        add(fileName,BorderLayout.CENTER);
        add(filePath, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(this);
        frame.pack();
        frame.setVisible(true);
     }

     public SendFileFrame(ClientFrame client) {
        super(new BorderLayout());
        showGUI();
        this.clientFrame = client;

     }

    public void actionPerformed(ActionEvent e){

        if(e.getSource() == selectFile) {

            int returnVal = fileChooser.showOpenDialog(SendFileFrame.this);

            if(returnVal == JFileChooser.APPROVE_OPTION) {

                file = fileChooser.getSelectedFile();
                fileName.setText(&quot;Name: &quot; + file.getName());
                filePath.setText(&quot;Path: &quot; + file.getPath());

            }
            else
                fileName.setText(&quot;Cancelled by user!&quot;);

        }
        else if(e.getSource() == sendFile)
        {
            clientFrame.setFile(this.file);
            frame.dispose();
        }

        else if(e.getSource() == cancel){
            frame.dispose();
        }
            // close

    }


    public static void main(String[] args) {

            SwingUtilities.invokeLater(() -&amp;gt; {
                SendFileFrame sf = new SendFileFrame(null);
            });

    }

    public File getFile() {
        return file;
    }
}&lt;/pre&gt;



&lt;p&gt;Rozwiązanie to jednak wywołuje NullPointerException. Jakieś rady, możliwe sposoby rozwiązania?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/203271/java-przesylanie-obiektu-file-pomiedzy-jframe</guid>
<pubDate>Mon, 05 Dec 2016 16:46:39 +0000</pubDate>
</item>
<item>
<title>Java i JFrame, JPanel - podstawy</title>
<link>https://forum.pasja-informatyki.pl/199528/java-i-jframe-jpanel-podstawy</link>
<description>

&lt;p&gt;Prosiłbym o pomoc w wytłumaczeniu, dlaczego to tak a nie inaczej działa. Zrobiłem sobie taki test:&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
package pl.test.dodge;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;

public class Dodge extends JPanel {
	

	public Dodge(){
		System.out.println(&quot;konstruktor Dodge()&quot;);
		setSize(new Dimension(500,400));
		setPreferredSize(new Dimension(500,400));
		setBackground(Color.black);
		
	}
	
	
	public void paint(Graphics g){
		//ta metoda jest caly czas wywolywana, nie musze jej wywolac
		System.out.println(&quot;metoda paint()&quot;);
		g.setColor(Color.BLACK);
		g.fillRect(0, 0, getWidth(), getHeight());
		System.out.println(&quot;opuszczam paint()&quot;);
	}
	
	
	public static void main(String[] args){
		
		System.out.println(&quot;tworze obiekt dodge w mainie&quot;);
		Dodge game = new Dodge();
		
		System.out.println(&quot;ciag dalszy maina&quot;);
		JFrame frame = new JFrame();
		frame.setTitle(&quot;Dodge the Rectangle&quot;);
		frame.add(game);   ///JAK TO ZAKOMENTUJE TO METODA PAINT NIE JEST WYWOLYWANA!
		frame.pack();
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		
	}

}&lt;/pre&gt;



&lt;p&gt;1. Domyśliłem się, że metoda paint() jest automatycznie wywoływana przez jave w momencie, jak zaczynam rysować czyli korzystać z klasy JFrame? Ktoś może to rozwinąć? W tym moim przykładzie przeciążam tę metodę na podobnej zasadziej, jak przeciążamy (zalecane jest to) metodę toString() ?&lt;/p&gt;



&lt;p&gt;2. Gdy zakomentuję frame.add(game) metoda paint() nie jest wywoływana - to dodanie &quot;komponentu&quot; (?) czy obiektu do ramki JFrame dopiero rozpoczyna proces rysowania?&lt;/p&gt;



&lt;p&gt;3. Nie bardzo rozumiem, jak to się dzieje że: tworze klasę Dodge. Ok. Rozszerzam ją o klase JPanel. Dlaczego nie muszę rozszerzać o klasę JFrame? A dlaczego muszę rozszerzać o JPanel? Czy ma to związek z tym, że kolejność dziedziczenia jest taka:&amp;nbsp; Object -&amp;gt; Dodge (moja klasa) -&amp;gt; JFrame -&amp;gt; JPanel ? Prosiłbym o łopatologiczne wytłumaczenie bo się pogubiłem.&lt;/p&gt;



&lt;p&gt;4. paint(Graphics g) - taki zapis jest możliwy, tak samo (na podobnej zasadzie) jakbym napisał paint(JFrame ramka) ? Czyli lokalnie przy wywołaniu funkcji paint tworzę obiekt g klasy Graphics i mogę dzięki temu z tego obiektu korzystać w tej metodzie? Korzystam z tutoriala. Normalnie napisałbym pewnie w metodzie:&amp;nbsp; Graphics g = new Graphics();&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/199528/java-i-jframe-jpanel-podstawy</guid>
<pubDate>Tue, 22 Nov 2016 20:10:26 +0000</pubDate>
</item>
<item>
<title>JFrame - eventy</title>
<link>https://forum.pasja-informatyki.pl/138654/jframe-eventy</link>
<description>Witam, zastanawia mnie za co w zapisie: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void actionPerformed(ActionEvent arg0) {}&lt;br /&gt;
&lt;br /&gt;
odpowiada &amp;quot;arg0&amp;quot;, ponieważ próbuję zamiast wywołania kodu kiedy przycisk zostanie naciśnięty, chcę go wywołać wtedy kiedy dotknie go kursor.&lt;br /&gt;
&lt;br /&gt;
Czy to jest możliwe?</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/138654/jframe-eventy</guid>
<pubDate>Sun, 08 May 2016 09:32:41 +0000</pubDate>
</item>
<item>
<title>Auto-rozmieszczanie przycisków</title>
<link>https://forum.pasja-informatyki.pl/123378/auto-rozmieszczanie-przyciskow</link>
<description>Chciałem zrobić klasę Przycisk, rozszerzającą klasę JButton, tak żeby podawać wszystkie (mi znane) pola opisujące JButton w konstruktorze, ew. nie podawać ich i żeby zadziałał konstruktor domyślny.Jak zrobić, żeby tworząc obiekt klasy Przycisk, on po dodaniu go do okna, on automatycznie rozmieszczał się obok ostatniego przycisku? Dodałem pola statyczne (xx,yy), które są używane w konstruktorze domyślnym (zamiast współrzędnych x,y) i w każdym innym konstruktorze zwiększałem tylko: xx=xx+szerokosc. No ale to nie działa, bo drugi przycisk rozmieszcza się losowo? &lt;br /&gt;
&lt;br /&gt;
PS: Jaką funkcją nadać przyciskowi nazwę? Tzn, np żeby się wyświetlał + czy -?</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/123378/auto-rozmieszczanie-przyciskow</guid>
<pubDate>Tue, 29 Mar 2016 08:33:20 +0000</pubDate>
</item>
<item>
<title>Zarządcy rozkładem, w oknie głównym kilka JPaneli z innym tłem</title>
<link>https://forum.pasja-informatyki.pl/118998/zarzadcy-rozkladem-w-oknie-glownym-kilka-jpaneli-z-innym-tlem</link>
<description>

&lt;p&gt;Hejka! Szukam w internecie informacji (także w książce Java Podstawy Wydanie IX) jednak ciągle uderzam w mur, ponieważ chcę dodać kilka JPaneli w jednym oknie, w JPanelu po lewej górnej stronie chciałbym umieścić przyciski, labele, w dolnym lewym dole JTextArea, a na środku (do końca prawej strony) panel z wykresem. Coś w tym stylu:&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=15295433394319217454&quot; style=&quot;height:450px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;W sumie myślałem o tym, żeby na JFrame nałożyć JPanel &quot;główny&quot;, na niego wrzucić 3 JPanele (stąd 4 kolory) i na poszczególnych JPanelach poszczególne obiekty. To mój kod, jednak wyświetla jeden JPanel (ostatni dodany) z jego kolorem i mimo zdefiniowania wielkości tego panelu po rozszerzeniu okna kolor zostaje rozciągnięty...&lt;/p&gt;



&lt;p&gt;Znalazłem w książce informacje o tym, że jeżeli ktoś chce kontrolować swój własny rozkład to najlepiej wybrać GridBoxLayout i obiekt GridBagConstraints, jednak wszelkie tutki na youtubie mówią o rozkładzie JButtonów i nie bardzo mi wychodzi... Macie jakiś pomysł by to zrobić ładnie zgrabnie i przyjemnie? Utknąłem :/&lt;/p&gt;



&lt;p&gt;Napiszę jeszcze, że przy rozkładzie ''null'' zrobiłem program wyświetlający na kolorowym panelu przyciski, ale dalej mam przy określonym rozmiarze panelu (co powinno być stałe) kolor rozciągnięty na chyba całą przestrzeń (nawet tą zasłoniętą...) Mój kod (celowo zostawiam zakomentowane pewne wiersze).&lt;/p&gt;



&lt;pre class=&quot;brush:java;&quot;&gt;
import javax.swing.*;
import java.awt.*;

public class MainWindow extends JFrame
{
    private final int DEFAULT_WIDTH = 1000;
    private final int DEFAULT_HEIGHT = 800;

    private final int PAN_GlOW_DEF_W = DEFAULT_WIDTH;
    private final int PAN_GLOW_DEF_H = DEFAULT_HEIGHT;
    private Dimension dimGlow = new Dimension(PAN_GlOW_DEF_W, PAN_GLOW_DEF_H);
    private final int PAN_LEWY_DEF_W = DEFAULT_WIDTH;
    private final int PAN_LEWY_DEF_H = DEFAULT_HEIGHT/4;
    private Dimension dimLewy = new Dimension(PAN_LEWY_DEF_W, PAN_LEWY_DEF_H);
    private final int PAN_WYK_DEF_W = DEFAULT_WIDTH;
    private final int PAN_WYK_DEF_H = DEFAULT_HEIGHT/4*3;
    private Dimension dimWykres = new Dimension(PAN_WYK_DEF_W, PAN_WYK_DEF_H);

    JPanel panelGlowny = new JPanel(null);
    JPanel panelLewy = new JPanel(null);
    JPanel panelWykres = new JPanel(null);

    private void addPanel(JPanel p, Dimension d, Color c, int x, int y)
    {
        p.setPreferredSize(d);
        //if(p == panelGlowny)
        //{
            this.getContentPane().add(p);
        //}
        //else panelGlowny.add(p);
        p.setLocation(x, y);
        p.setBackground(c);
        p.setLayout(null);
    }

    public MainWindow()
    {
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        setLocation(400, 100);
        setTitle(&quot;Black Jack&quot;);
//        setLayout(null);

//        panelGlowny.setPreferredSize(dimGlow);
//        panelGlowny.setLocation(0, 0);
//        panelGlowny.setBackground(new Color(34,139,34));
//        this.getContentPane().add(panelGlowny);

        addPanel(panelGlowny, dimGlow, Color.BLUE, 0, 0);
        addPanel(panelLewy, dimLewy, Color.CYAN, 0, 0);
        addPanel(panelWykres, dimWykres, Color.GREEN, 0, PAN_LEWY_DEF_H);
    }
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/118998/zarzadcy-rozkladem-w-oknie-glownym-kilka-jpaneli-z-innym-tlem</guid>
<pubDate>Wed, 16 Mar 2016 10:34:20 +0000</pubDate>
</item>
<item>
<title>JFrame, po dodaniu elementów, nie zawsze widać je od razu</title>
<link>https://forum.pasja-informatyki.pl/10938/jframe-po-dodaniu-elementow-nie-zawsze-widac-je-od-razu</link>
<description>

&lt;p&gt;Witam.&lt;/p&gt;



&lt;p&gt;Od niedawna uczę się programować w Javie. Jako że mam jakąś tam praktykę z C++ to nie bawiłem się w bąbelki, kopce itp w consoli, tylko przeszedłem do okienkowiego pakietu Swing.&lt;/p&gt;



&lt;p&gt;Zauważyłem, że pisząc okienko, dodając jakieś buttony, menu itp. czasami po odpaleniu programu nie widzę od razu tych komponentów - okno jest puste. Po delikatnym powiekszeniu okna wszystkie komponenty zaczynają mi się wyświetlać.&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://s10.postimg.org/tu8ndrjpl/nie_Dzialajace.png&quot; style=&quot;height:327px; width:716px&quot;&gt;Udało mi się rozwiazac ten problem.&lt;/p&gt;



&lt;p&gt;Nalezy zainicjalizowac główne okno (JFrame) &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;PO&lt;/strong&gt;&lt;/span&gt; inicjalizacji oraz dodaniu do głównego okna wszystkich komponentów. Jeżeli zrobimy na odwrót, mamy sytuację taką, jak na powyższym obrazku.&lt;/p&gt;



&lt;hr&gt;


&lt;p&gt;a tutaj kody źródłow - istotna jest tutaj metoda initWindowSettings()&lt;/p&gt;



&lt;p&gt;Niedzialajacy - &lt;a href=&quot;http://wklej.org/id/1690584/&quot; rel=&quot;nofollow&quot;&gt;http://wklej.org/id/1690584/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Dzialajacy - &lt;a href=&quot;http://wklej.org/id/1690585/&quot; rel=&quot;nofollow&quot;&gt;http://wklej.org/id/1690585/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Czy znalazłby się ktoś, kto odpowiedziałby na pytanie, dlaczego tak się dzieje? Jaki jest mechanizm tego błędu, że dzieje się tak a nie inaczej?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/10938/jframe-po-dodaniu-elementow-nie-zawsze-widac-je-od-razu</guid>
<pubDate>Fri, 17 Apr 2015 21:18:46 +0000</pubDate>
</item>
</channel>
</rss>