Tôi đang cố gắng tạo GUI bằng cách sử dụng Java bằng mã hóa tay (không sử dụng công cụ GUI).Swing/AWT - Tạo GUI theo chương trình
Tôi đang cố tạo một thứ gì đó giống như hình bên dưới, nhưng nó không xuất hiện như tôi muốn. (Nó được tạo ra bởi một ứng dụng mockup gọi Pencil)
Đây là mã cho đến nay:
import java.awt.*;
import javax.swing.*;
import javax.swing.JTable;
public class GUI extends JFrame {
public void buildGui() {
JFrame frame = new JFrame("Hotel TV Scheduler");
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
JPanel listPanel = new JPanel();
listPanel.setLayout(new FlowLayout());
JTable chOneTable = new JTable();
JTable chTwoTable = new JTable();
JTable listTable = new JTable();
JButton rmvChOneButton = new JButton("Remove Channel");
JButton rmvChTwoButton = new JButton("Remove Channel");
listPanel.add(chOneTable);
listPanel.add(chTwoTable);
listPanel.add(listTable);
listPanel.add(rmvChOneButton);
listPanel.add(rmvChTwoButton);
JPanel infoPanel = new JPanel();
infoPanel.setLayout(new GridLayout());
JLabel titleLabel = new JLabel("Title");
JLabel genreLabel = new JLabel("Genre");
JLabel durationLabel = new JLabel("Duration");
JLabel actorLabel = new JLabel("Actor");
JLabel directorLabel = new JLabel("Director");
JLabel rentLabel = new JLabel("Rentable");
JLabel synopsisLabel = new JLabel("Synopsis");
JTextField txtTitle = new JTextField();
JTextField txtGenre = new JTextField();
JTextField txtDuration = new JTextField();
JTextField txtActor = new JTextField();
JTextField txtDirector = new JTextField();
JTextField txtSynopsis = new JTextField();
JCheckBox rentCB = new JCheckBox();
infoPanel.add(titleLabel);
infoPanel.add(txtTitle);
infoPanel.add(genreLabel);
infoPanel.add(txtGenre);
infoPanel.add(durationLabel);
infoPanel.add(txtDuration);
infoPanel.add(actorLabel);
infoPanel.add(txtActor);
infoPanel.add(directorLabel);
infoPanel.add(txtDirector);
infoPanel.add(rentLabel);
infoPanel.add(rentCB);
infoPanel.add(synopsisLabel);
infoPanel.add(txtSynopsis);
contentPane.add(listPanel);
contentPane.add(infoPanel);
frame.setVisible(true);
}
}
Bất kỳ ý tưởng về những gì Layouts tôi có thể sử dụng để tạo ra các thiết lập GUI hoặc làm thế nào để đạt được nó bằng cách mã hóa nó?
Lý do không muốn sử dụng công cụ GUI là gì? Họ làm cho cuộc sống dễ dàng hơn nhiều. – kevingreen
@kevingreen: Một lý do tuyệt vời là giúp một người hiểu rõ hơn về Swing trước khi sử dụng các công cụ GUI. Sau đó, nếu bạn gặp khó khăn khi giải quyết một cái gì đó bằng cách sử dụng công cụ GUI, bạn sẽ có một thời gian dễ dàng hơn nhiều để hiểu làm thế nào để sửa chữa nó. Tôi mạnh mẽ khuyến khích áp phích ban đầu trong nỗ lực này. 1+. Và 1+ để kevingreen cho câu trả lời tuyệt vời của mình dưới đây. –
@HovercraftFullOfEels Tôi cảm thấy ngược lại. Tôi nghĩ rằng nhìn thấy một đại diện trực quan của bố trí Swing khi bạn xây dựng sẽ giúp Brian xem cách mọi thứ tương tác trong một thời trang dễ dàng hơn thử/biên dịch/lỗi chu kỳ. Bạn luôn luôn có thể nhìn dưới mui xe để xem mã (Eclipse/Netbeans anyway). Netbeans sẽ cho phép bạn tùy chỉnh mã và nhanh chóng hiển thị chúng trong công cụ GUI. Nhưng dù bằng cách nào, tôi cũng khuyến khích nỗ lực này. – kevingreen