From: BEHROUZ on
Hi Every one,
I am new at java swing and I am trying to add a Jpanel to my frame. I
have three simple class as below
1-Class MyPanel
2-Class MyFrame
3-Class Main
I did my best to add the panel to my frame but it did not work! Could
you please let me know what I am doing wrong!?
//=====================
1.
2. package mypaneltest;
3. import javax.swing.JButton;
4. import javax.swing.JPanel;
5.
6. public class MyPanel extends JPanel {
7. public MyPanel(){
8. JPanel pan = new JPanel();
9. JButton okButton = new JButton("OK");
10. pan.add(okButton);
11. }
12. }
13. //=====================
14. package mypaneltest;
15. import javax.swing.JFrame;
16.
17. public class MyFrame extends JFrame {
18. public MyFrame(){
19. super("Test");
20. setSize(300,200);
21. setLocationRelativeTo(null);
22. MyPanel pane = new MyPanel();
23. add(pane);
24. }
25. }
26. //======================
27. package mypaneltest;
28.
29. public class Main {
30. public static void main(String[] args) {
31. new MyFrame().setVisible(true);
32. }
33. }

Best Regards
From: RedGrittyBrick on
On 15/02/2010 08:52, BEHROUZ wrote:
> 2. package mypaneltest;
> 3. import javax.swing.JButton;
> 4. import javax.swing.JPanel;
> 5.
> 6. public class MyPanel extends JPanel {
> 7. public MyPanel(){
> 8. JPanel pan = new JPanel();
> 9. JButton okButton = new JButton("OK");
> 10. pan.add(okButton);

Note pan is a separate instance of JPanel from that constructed by MyPanel

Delete 8. and replace 109 with
add(okButton)


Note that your should also construct your GUI on the EDT - you will
have problems later if you don't.

You should also pack() your JFrame.

> 11. }
> 12. }
> 13. //=====================
> 14. package mypaneltest;
> 15. import javax.swing.JFrame;
> 16.
> 17. public class MyFrame extends JFrame {
> 18. public MyFrame(){
> 19. super("Test");
> 20. setSize(300,200);
> 21. setLocationRelativeTo(null);
> 22. MyPanel pane = new MyPanel();
> 23. add(pane);
> 24. }
> 25. }
> 26. //======================
> 27. package mypaneltest;
> 28.
> 29. public class Main {
> 30. public static void main(String[] args) {
> 31. new MyFrame().setVisible(true);
> 32. }
> 33. }

It's good that you provided the full code that illustrates your problem.
It's bad that you added line numbers. I couldn't immediately see what
was causing your problems and the line numbers prevent me using
cut&paste to put your code into a Java compiler.


Here's how I'd have written it

---------------------8<--------------------------
package org.redgrittybrick.test.swing;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class MyPanelTest {
/**
* @author: RedGrittyBrick
*/

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MyPanelTest().createAndShowGUI();
}
});
}

private void createAndShowGUI() {
JPanel p = new JPanel();
p.add(new JButton("OK"));

JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(p);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
---------------------8<--------------------------

From: BEHROUZ on
On Feb 15, 2:18 am, RedGrittyBrick <RedGrittyBr...(a)spamweary.invalid>
wrote:
> On 15/02/2010 08:52, BEHROUZ wrote:
>
> >     2. package mypaneltest;
> >     3. import javax.swing.JButton;
> >     4. import javax.swing.JPanel;
> >     5.
> >     6. public class MyPanel extends JPanel {
> >     7. public MyPanel(){
> >     8.     JPanel pan = new JPanel();
> >     9.     JButton okButton = new JButton("OK");
> >    10.     pan.add(okButton);
>
> Note pan is a separate instance of JPanel from that constructed by MyPanel
>
> Delete 8. and replace 109 with
>     add(okButton)
>
> Note that your should also construct your GUI on the EDT - you  will
> have problems later if you don't.
>
> You should also pack() your JFrame.
>
>
>
> >    11. }
> >    12. }
> >    13. //=====================
> >    14. package mypaneltest;
> >    15. import javax.swing.JFrame;
> >    16.
> >    17. public class MyFrame extends JFrame {
> >    18. public MyFrame(){
> >    19.      super("Test");
> >    20.      setSize(300,200);
> >    21.      setLocationRelativeTo(null);
> >    22.   MyPanel pane = new MyPanel();
> >    23.   add(pane);
> >    24. }
> >    25. }
> >    26. //======================
> >    27. package mypaneltest;
> >    28.
> >    29. public class Main {
> >    30.     public static void main(String[] args) {
> >    31.          new MyFrame().setVisible(true);
> >    32.     }
> >    33. }
>
> It's good that you provided the full code that illustrates your problem.
> It's bad that you added line numbers. I couldn't immediately see what
> was causing your problems and the line numbers prevent me using
> cut&paste to put your code into a Java compiler.
>
> Here's how I'd have written it
>
> ---------------------8<--------------------------
> package org.redgrittybrick.test.swing;
>
> import javax.swing.JButton;
> import javax.swing.JFrame;
> import javax.swing.JPanel;
> import javax.swing.SwingUtilities;
>
> public class MyPanelTest {
>      /**
>       * @author: RedGrittyBrick
>       */
>
>      public static void main(String[] args) {
>          SwingUtilities.invokeLater(new Runnable() {
>              public void run() {
>                  new MyPanelTest().createAndShowGUI();
>              }
>          });
>      }
>
>      private void createAndShowGUI() {
>          JPanel p = new JPanel();
>          p.add(new JButton("OK"));
>
>          JFrame f = new JFrame("Test");
>          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>          f.add(p);
>          f.pack();
>          f.setLocationRelativeTo(null);
>          f.setVisible(true);
>      }}
>
> ---------------------8<--------------------------
Thanks,
I got it now, but what is EDT?
**Note that your should also construct your GUI on the EDT - you will
have problems later if you don't.**
could you please tell me more?

From: Lew on
BEHROUZ wrote:
> I got it now, but what is EDT?
> **Note that your should also construct your GUI on the EDT - you will
> have problems later if you don't.**
> could you please tell me more?

This is covered in the Swing tutorial, which you should have read and should
read now. In particular, the EDT is covered in:
<http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html>

See also:
<http://www.google.com/search?q=Java+EDT>
or
<http://www.google.com/search?q=Java+"Event+Dispatch+Thread">

GIYF.

--
Lew
From: Roedy Green on
On Mon, 15 Feb 2010 10:18:49 +0000, RedGrittyBrick
<RedGrittyBrick(a)spamweary.invalid> wrote, quoted or indirectly quoted
someone who said :


>
>It's good that you provided the full code that illustrates your problem.
>It's bad that you added line numbers. I couldn't immediately see what
>was causing your problems and the line numbers prevent me using
>cut&paste to put your code into a Java compiler.

Visual SlickEdit is great for this. You just drag a rectangle with
the right mouse button and hit delete. Intellij has column mode -- not
quite so convenient, but great for doing things like stripping off
line numbers.

I do all kinds of data manipulation tasks using just the column, sort
and regex search replace features of Slick Edit. It saves writing
reams of one-shot code.
--
Roedy Green Canadian Mind Products
http://mindprod.com

Nothing has really happened until it has been recorded.
~ Virginia Woolf (born: 1882-01-25 died: 1941-03-28 at age: 59)