Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Lập trình java - cách thiết kế giao diện với layout trong java swing???

3749 Lượt xem 18 Bình luận 0 Lượt báo xấu
nhờ mọi người giúp mình cái giao diện này với, làm sao có thể xắp xếp sao nó đúng như cái hình này
IMG

package calculator;  
import java.awt.*;
import javax.swing.*;

public class 
CalculatorDemo extends JFrame
{
    
JFrame frame = new JFrame();
    
JMenuBar mb = new JMenuBar();
    
JMenu filemenu = new JMenu("File");
    
JMenuItem newmenu = new JMenuItem("New"); 
    
JMenu helpmenu = new JMenu("Help");
    
JMenuItem aboutmenu = new JMenuItem("About");
    
JTextField t = new JTextField(26);
    
JButton b1 = new JButton("Backspace");
    
JButton b2 = new JButton("C");
    
JButton b3 = new JButton("CE");
    
JButton b4 = new JButton("sqrt");
    
JButton b5 = new JButton("1/x");
    
JButton b6 = new JButton("%");
    
JButton b7 = new JButton("=");
    
JButton b8 = new JButton("+");
    
JButton b9 = new JButton("-");
    
JButton b10 = new JButton("*");
    
JButton b11 = new JButton("%");
    
JButton b12 = new JButton(" ");
    
JButton b13 = new JButton("+/-"); 
    
JButton[] b = new JButton[9];
    
JPanel p = new JPanel();
    public 
CalculatorDemo(String title)
    {
        
super(title);
        
this.setLayout(new FlowLayout());
        
this.setJMenuBar(mb);
        
mb.add(filemenu);
        
filemenu.add(newmenu);
        
filemenu.addSeparator(); 
        
mb.add(helpmenu);
        
helpmenu.add(aboutmenu);
        
add(t);
        
add(b1); 
        
b1.setLocation(50, 20);
        
add(b2);
        
add(b3);
        
add(b4);
        
add(b5); 
        
add(b6);
        
add(b7);
        
add(b8);
        
add(b9);
        
add(b10);
        
add(b11);
        
add(b12);
        
add(b13); 

    }
    public static 
void main(String arg[])
    {
        
CalculatorDemo c = new CalculatorDemo("Calculator");
        
c.setSize(300,200);
        
c.setVisible(true);
        
c.setResizable(false);
        
c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
        
c.show();
    }
}

Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Bạn đang lập trình Java bằng IDE nào? Netbean thì khỏi nói, còn nếu là Eclipse thì có thể dùng pluhin của nó. Còn nếu tool bình thường thì chỉnh giao diện cho nó là một vấn đề. Hãy sử dụng netbean hoặc eclipse đi, làm quen để sau còn đi làm nữa...
0 Lượt thích

em dùng netbean mà nhưng code tay thui ah, sử dụng design bằng Netbean thấy code dài mà cứ rối rối sao ấy hay tại e nhìn ko quen nhỉ
0 Lượt thích

bạn nên tập nhìn đi vì lập trình viên cấp cao sao này để tiết kiệm thời gian đâu ai rãnh code tay bạn toàn drag và drop thôi. Lúc đầu mình cũng ko quen mấy sau này dùng thấy quen rồi, mấy code đó chủ yếu khai báo như code bt có đều nó bung gói ra thôi
VD : để tạo 1 button
thay vì bạn chỉ cần Button b = new Button("BB");
thì nó code bung gói dạng java.swing.jButton b = new java.swing.jButton("bb");
tôi thấy cũng bt mà làm vậy chuyên nghiệp vì biết components đó nằm ở package nào
0 Lượt thích

Hiểu cấu trúc rồi hãy kéo thả.

Bạn tìm hiểu tất cả các layout, mỗi cái có một chuẩn hiện thị, ví dụ như flowlayout sẽ cho các phần tử nối đuôi nhau, hết dòng thì xuống dòng mới nên của cậu mới xấu như vậy đó, nếu dùng gridlayout thì nó sẽ chia theo dạng lưới.
0 Lượt thích

vâng, cũng là vì em mới nhập môn...lại tự mò nữa lên gặp nhiều khó khăn, em cũng muốn tự code để hiểu trước sau này Bro như mí anh rồi thì mới kéo thả,...đằng nào e cũng rảnh mà hjhj( mừ đọc riêng về swing ko biết nên theo đọc cái nào ah )
vấn đề trên ko biết nên sử lý thế nào ah
0 Lượt thích

Dùng nhiều panel đặt chồng lên nhau, đôi khi một cái chứa nhiều cái khác theo một layout nữa. Em tìm hiểu các layout nó khác nhau và có tác dụng như thế nào đi.
0 Lượt thích

có ai làm demo giùm e với đựoc ko ah, hjx hjx
0 Lượt thích

    Khổ em ghê, kêu đi tìm hiểu layout xem từng loại nó làm gì mà không chịu tìm hiểu.
    Code của em đổi

    this.setLayout(new FlowLayout());

    thành

    this.setLayout(new GridLayout(5, 5));
    xem nó ra như thế nào.

0 Lượt thích

e mò mấy cái đó rồi , làm nhưng ko ra đc kết quả như mong muốn thế nên e mới nhờ, không tài nào ra đc hình như cái hình đầu tiên ở trên kia,nếu dùng GridLayout như của anh như vậy thì cũng ko ra đc kết quả như ý muốn, có cái chỗ khoảng trắng giữa backspace và CE đó
0 Lượt thích

GridLayout hay GridbagLayout?
0 Lượt thích

GridLayout tự động căn đề các phần tử theo dòng và cột.

GridbagLayout cho phép một phần tử có thể nằm trên nhiều dòng nhiều cột nên sẽ phức tạp hơn.

0 Lượt thích

Theo mình tốt nhất là cứ Drop bình thường . các giao diện đơn giản thế thì tự căn là ok hết . ko cần set Layout kiểu gì hết
0 Lượt thích

thật khó mường tượng, và khó ăn , đọc hoải mà làm chẳng ra nữa hjc, anh JackV hay Bro nào ghé qua code giùm e bài này đi,chứ mò kiểu chẳng biết bao gio mới ra nữa..cảm ơn
0 Lượt thích

Làm đi em, đưa code lên xem hiểu đến đâu rồi, đang học mà, cố gắng mày mò cho ra chứ.
0 Lượt thích

hjx, mò hoài mà chẳng ra...chán rùi :(( ,
mà em

package calculator; 
import java.awt.*;
import javax.swing.*;

public class CalculatorDemo extends JFrame
{
    JFrame frame = new JFrame();
    JMenuBar mb = new JMenuBar();
    JMenu filemenu = new JMenu("File");
    JMenuItem newmenu = new JMenuItem("New");
    JMenu helpmenu = new JMenu("Help");
    JMenuItem aboutmenu = new JMenuItem("About");
    JTextField t = new JTextField(100);
    JButton b1 = new JButton("Backspace");
    JButton b2 = new JButton("C");
    JButton b3 = new JButton("CE");
    JButton b4 = new JButton("sqrt");
    JButton b5 = new JButton("1/x");
    JButton b6 = new JButton("%");
    JButton b7 = new JButton("=");
    JButton b8 = new JButton("+");
    JButton b9 = new JButton("-");
    JButton b10 = new JButton("*");
    JButton b11 = new JButton("%");
    JButton b12 = new JButton(" ");
    JButton b13 = new JButton("+/-");
    JButton b[];
    String str[] = {"1","2","3","4","5","6","7","8","9"};
    
    public CalculatorDemo(String title)
    {
        super(title);
        this.setJMenuBar(mb);
        setBackground(Color.blue);
        mb.add(filemenu);
        filemenu.add(newmenu);
        filemenu.addSeparator();
        mb.add(helpmenu);
        helpmenu.add(aboutmenu);
       BorderLayout bd = new BorderLayout();
        GridLayout gl = new GridLayout();
        add(t,bd.PAGE_START);
        add(b1,bd.WEST);
        add(b1);
        add(b2);
        add(b3);
        add(b4);
        add(b5);
        add(b6);
        add(b7);
        add(b8);
        add(b9);
        add(b10);
        add(b11);
        add(b12);
        add(b13);
        b = new JButton[str.length];
        for (int i = 0; i < str.length; i++) {
            b[i] = new JButton(str[i]);
            add(b[i]);
        }
    }
    public static void main(String arg[])
    {
        CalculatorDemo c = new CalculatorDemo("Calculator");
        c.setSize(300,210);
        c.setVisible(true);
        c.setResizable(false);
        c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
        c.show();
    }
}


0 Lượt thích

hjx, mò hoài mà chẳng ra...chán rùi :(( ,
mà em tạo 1 cái GrildLayout mới, rùi add vào những thằng còn lại,chẳng chạy đc :cry:

package calculator; 
import java.awt.*;
import javax.swing.*;

public class CalculatorDemo extends JFrame
{
    JFrame frame = new JFrame();
    JMenuBar mb = new JMenuBar();
    JMenu filemenu = new JMenu("File");
    JMenuItem newmenu = new JMenuItem("New");
    JMenu helpmenu = new JMenu("Help");
    JMenuItem aboutmenu = new JMenuItem("About");
    JTextField t = new JTextField(100);
    JButton b1 = new JButton("Backspace");
    JButton b2 = new JButton("C");
    JButton b3 = new JButton("CE");
    JButton b4 = new JButton("sqrt");
    JButton b5 = new JButton("1/x");
    JButton b6 = new JButton("%");
    JButton b7 = new JButton("=");
    JButton b8 = new JButton("+");
    JButton b9 = new JButton("-");
    JButton b10 = new JButton("*");
    JButton b11 = new JButton("%");
    JButton b12 = new JButton(" ");
    JButton b13 = new JButton("+/-");
    JButton b[];
    String str[] = {"1","2","3","4","5","6","7","8","9"};
    
    public CalculatorDemo(String title)
    {
        super(title);
        this.setJMenuBar(mb);
        setBackground(Color.blue);
        mb.add(filemenu);
        filemenu.add(newmenu);
        filemenu.addSeparator();
        mb.add(helpmenu);
        helpmenu.add(aboutmenu);
       BorderLayout bd = new BorderLayout();
        GridLayout gl = new GridLayout();
        add(t,bd.PAGE_START);
        add(b1,bd.WEST);
        add(b1);
        add(b2);
        add(b3);
        add(b4);
        add(b5);
        add(b6);
        add(b7);
        add(b8);
        add(b9);
        add(b10);
        add(b11);
        add(b12);
        add(b13);
        b = new JButton[str.length];
        for (int i = 0; i < str.length; i++) {
            b[i] = new JButton(str[i]);
            add(b[i]);
        }
    }
    public static void main(String arg[])
    {
        CalculatorDemo c = new CalculatorDemo("Calculator");
        c.setSize(300,210);
        c.setVisible(true);
        c.setResizable(false);
        c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
        c.show();
    }
}


0 Lượt thích

private void initComponents() {

        panelKhuFirstCuaBorderLayout = new javax.swing.JPanel();
        txtHienThi = new javax.swing.JTextField();
        panelConKhuFirstCuaBorderLayout = new javax.swing.JPanel();
        butBackspace = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        butCE = new javax.swing.JButton();
        butC = new javax.swing.JButton();
        panelCenterCuaBorderLayout = new javax.swing.JPanel();
        but7 = new javax.swing.JButton();
        but8 = new javax.swing.JButton();
        but9 = new javax.swing.JButton();
        butDevide = new javax.swing.JButton();
        butSQRT = new javax.swing.JButton();
        but4 = new javax.swing.JButton();
        but5 = new javax.swing.JButton();
        but6 = new javax.swing.JButton();
        butMultiple = new javax.swing.JButton();
        but1divex = new javax.swing.JButton();
        but1 = new javax.swing.JButton();
        but2 = new javax.swing.JButton();
        but3 = new javax.swing.JButton();
        butSubtract = new javax.swing.JButton();
        butPercent = new javax.swing.JButton();
        but0 = new javax.swing.JButton();
        butPositiveNegative = new javax.swing.JButton();
        butDot = new javax.swing.JButton();
        butAdd = new javax.swing.JButton();
        butEqual = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        panelKhuFirstCuaBorderLayout.setLayout(new java.awt.GridLayout(2, 0));

        txtHienThi.setEditable(false);
        panelKhuFirstCuaBorderLayout.add(txtHienThi);

        panelConKhuFirstCuaBorderLayout.setMinimumSize(new java.awt.Dimension(146, 46));
        panelConKhuFirstCuaBorderLayout.setLayout(new java.awt.BorderLayout(2, 2));

        butBackspace.setText("  Back Space  ");
        panelConKhuFirstCuaBorderLayout.add(butBackspace, java.awt.BorderLayout.WEST);

        jPanel4.setMinimumSize(new java.awt.Dimension(90, 23));
        jPanel4.setPreferredSize(new java.awt.Dimension(150, 35));
        jPanel4.setLayout(new java.awt.GridLayout(1, 0, 5, 2));

        butCE.setText("CE");
        jPanel4.add(butCE);

        butC.setText("C");
        jPanel4.add(butC);

        panelConKhuFirstCuaBorderLayout.add(jPanel4, java.awt.BorderLayout.EAST);

        panelKhuFirstCuaBorderLayout.add(panelConKhuFirstCuaBorderLayout);

        getContentPane().add(panelKhuFirstCuaBorderLayout, java.awt.BorderLayout.PAGE_START);

        panelCenterCuaBorderLayout.setLayout(new java.awt.GridLayout(4, 5, 2, 2));

        but7.setText("7");
        panelCenterCuaBorderLayout.add(but7);

        but8.setText("8");
        panelCenterCuaBorderLayout.add(but8);

        but9.setText("9");
        panelCenterCuaBorderLayout.add(but9);

        butDevide.setText("/");
        panelCenterCuaBorderLayout.add(butDevide);

        butSQRT.setText("sqrt");
        panelCenterCuaBorderLayout.add(butSQRT);

        but4.setText("4");
        panelCenterCuaBorderLayout.add(but4);

        but5.setText("5");
        panelCenterCuaBorderLayout.add(but5);

        but6.setText("6");
        panelCenterCuaBorderLayout.add(but6);

        butMultiple.setText("*");
        panelCenterCuaBorderLayout.add(butMultiple);

        but1divex.setText("1/x");
        panelCenterCuaBorderLayout.add(but1divex);

        but1.setText("1");
        panelCenterCuaBorderLayout.add(but1);

        but2.setText("2");
        panelCenterCuaBorderLayout.add(but2);

        but3.setText("3");
        panelCenterCuaBorderLayout.add(but3);

        butSubtract.setText("-");
        panelCenterCuaBorderLayout.add(butSubtract);

        butPercent.setText("%");
        panelCenterCuaBorderLayout.add(butPercent);

        but0.setText("0");
        panelCenterCuaBorderLayout.add(but0);

        butPositiveNegative.setText("+/-");
        panelCenterCuaBorderLayout.add(butPositiveNegative);

        butDot.setText(".");
        panelCenterCuaBorderLayout.add(butDot);

        butAdd.setText("+");
        panelCenterCuaBorderLayout.add(butAdd);

        butEqual.setText("=");
        panelCenterCuaBorderLayout.add(butEqual);

        getContentPane().add(panelCenterCuaBorderLayout, java.awt.BorderLayout.CENTER);

    }


Nếu thấy phức tạp quá thì set null layout cho jframe rồi setLocation và setSize cho từng nút.

0 Lượt thích

thanks you, có lẽ nên đọc kỹ phần này
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng