[HELP] Không setIcon được cho JButton và setSize cho JFrame

corby112

New Member
11/10/11
11
0
1
Mình đang tạo một ứng dụng Java sử dụng Swing để tạo giao diện.. Nhưng mình không thể tạo icon cho JToggleButton và JButton được, thêm một vấn đề nữa là mình sử dụng setSize chho frame cũng không được luôn. Mong các bạn giúp đỡ.

Code:
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.JToolBar;
import javax.swing.JToggleButton;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.Icon;
package package_editor;

public class editor extends JFrame
{
    private static  JToolBar jtbcontrol;
    private static  JToggleButton bttpreview, bttaleft, bttacenter, bttaright,
                                 btttbold, btttitalic, btttunderline;
    private static  JTextArea jtatext;
    private static  JButton bttisimage, bttisvideo;
  

    private static  JPanel jpncontrol;
    public editor()
    {
        Icon icopreview = new ImageIcon("images/ico_preview.png");
        bttpreview = new JToggleButton();
        bttpreview.setIcon(icopreview);
        bttisimage = new JButton();
        bttisimage.setIcon(icopreview);
          

        jpncontrol = new JPanel();
        jpncontrol.setLayout(new java.awt.FlowLayout());
        jpncontrol.add(bttpreview);
        jpncontrol.add(bttisimage);

        getContentPane().add(jpncontrol, java.awt.BorderLayout.NORTH);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
    public static void main(String[] args)
    {
        editor a = new editor();
        a.pack();
        a.show();
    }
}
Mình sử dụng NetBeans 6.9.1 để code .. Cảm ơn!
 

kimtai2011

Member
21/4/10
151
1
18
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

HTML:
package exedbsj;

/**
 *
 * @author TaiKim-PC
 */
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.JToolBar;
import javax.swing.JToggleButton;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JFrame;


public class Editor extends JFrame
{
   private static  JToolBar jtbcontrol;
    private static  JToggleButton bttpreview, bttaleft, bttacenter, bttaright,
                                 btttbold, btttitalic, btttunderline;
    private static  JTextArea jtatext;
    private static  JButton bttisimage, bttisvideo;
  
    private Image image;
    private   Icon icopreview;
    private static  JPanel jpncontrol;
    public Editor()
    {
       
        URL url=getClass().getResource("/images/Burn.png");
        image=Toolkit.getDefaultToolkit().getImage(url);
        icopreview=new ImageIcon(image);
        
        bttpreview = new JToggleButton();
        bttpreview.setIcon(icopreview);
        bttisimage = new JButton();
        bttisimage.setIcon(icopreview);
          

        jpncontrol = new JPanel();
        jpncontrol.setLayout(new java.awt.FlowLayout());
        jpncontrol.add(bttpreview);
        jpncontrol.add(bttisimage);

        getContentPane().add(jpncontrol, java.awt.BorderLayout.NORTH);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
      
    

    public static void main(String[] args)
    {
        Editor a = new Editor();
       a.pack();
        a.show();
         
    }
}
Còn việc bạn không setSize được cho Frame là do chỗ a.pack() ấy.Theo mình ngĩ thì pack() đóng gói Frame của bạn dựa theo kích thướt của các thành phần của Frame,nghĩa là Frame tự động resize kích thướt theo các thành phần con.Còn nếu muốn setSize Frame theo ý bạn thì chỉ cần bỏ pack() đi là đc.

Nếu có sai sót xin lỗi vì trình còn kém 8-x8-x
 

corby112

New Member
11/10/11
11
0
1
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

setSize cho frame thi được rồi ... còn phần setIcon thì làm như thế nào vậy bạn..
Mình đã thay code của bạn vào nhưng nó không chạy chứ không biết có hiển thị icon được không.
Mình để file ảnh vào thư mục src/<ten package>
Minh sử dụng netbean
Đây là lỗi khi mình run
Code:
Uncaught error fetching image:
java.lang.NullPointerException
        at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
        at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
Cảm ơn trước nghe :D
 

kimtai2011

Member
21/4/10
151
1
18
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

Của mình chạy bình thường mà.Bạn thử bỏ dấu / trước thư mục image xem.Sửa lại như thế này :

URL url=getClass().getResource("images/Burn.png");

Thử có được hok???
 
20/5/10
144
2
18
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

Chưa test code chủ thớt nhưng nhìn code thì thấy chắc chắn là sẽ không setIcon cho button được. Bạn nên lưu ý môt vài điều sau xem có thành công không nhé!
- Thứ nhất bạn kiểm tra xem trong cùng thư mục với file .class(ko phải file .java nhé) đã tạo thư mục images chưa, chưa tạo thì tạo đi.
- Thứ hai là bạn đang sử dụng HĐH Window thì dấu đường dẫn là "\" chứ không phải là "/".
- Thứ ba là nếu bạn sửa dấu "/" thành "\", có nghĩa là nó sẽ trở thành như sau:
Code:
Icon icopreview = new ImageIcon("images[COLOR="Red"]\i[/COLOR]co_preview.png");
bttpreview.setIcon(icopreview);
Chuỗi đường dẫn trên trong Java vẫn hoàn toàn vô nghĩa bởi kí tự "\" sẽ kết hợp với kí tự "i" và tạo thành một kí tự khác. Ví dụ như kí tự "\" kết hợp với kí tự "n" thành "\n" tương đương với kí tự xuống dòng hoặc "\t" = tab.
Vì vậy để có một đường dẫn hoàn hảo theo như code của bạn thì bạn thứ test câu lệnh sau:
Code:
Icon icopreview = new ImageIcon("images\\ico_preview.png");
Lưu ý là bạn thành hoàn thành điều thứ nhất. Nếu không chắc thì thế này cho nó lành, copy cái ảnh vaò ổ D >:D<
Code:
Icon icopreview = new ImageIcon("D:\\images\\ico_preview.png");
 
20/5/10
144
2
18
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

Khai báo package package_editor đưa lên trên cùng nha bạn
Sau đó tạo thư mục images trong thư mục có tên là package_editor
file đính kèm là toàn bộ code của bạn, mình chỉ sửa lại chỗ khai báo ImageIcon mà mình đã lưu ý ở bài viết trên
Test chạy OK! :)>-
 

corby112

New Member
11/10/11
11
0
1
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

Cảm ơn 2 bạn đã giúp đỡ .. thực ra code của 2 người đều chạy tốt...
Do mình không để ý nên viết sai đường dẫn file .. mình use linux mà để đường dẫn "\" :D
 

xomcomon

CongdongJava Dev Group
11/12/10
711
3
18
Hà Nội
Ðề: [HELP] Không setIcon được cho JButton và setSize cho JFrame

Cảm ơn 2 bạn đã giúp đỡ .. thực ra code của 2 người đều chạy tốt...
Do mình không để ý nên viết sai đường dẫn file .. mình use linux mà để đường dẫn "\" :D
máy mình cùi dùng ubuntu chạy như công nông