Tổng hợp các bài viết về Java Swing theo thứ tự từ cơ bản
- Hello Java Swing
- JLabel
- JButton
- JTextField
- JPanel
- Layout Managers
- FlowLayout
- GridLayout
- BorderLayout
- BoxLayout
- GridBagLayout
- CardLayout
- SpringLayout
- GroupLayout
- JTextArea trong Java – JTextArea in Java
- JPasswordField trong Java – JPasswordField in Java
- JCheckBox trong Java – JCheckBox in Java
- JRadioButton trong Java – JRadioButton in java
- JComboBox trong Java – JComboBox in Java
- JTabbedPane trong Java
- Tùy biến JTabbedPane
- JMenu trong Java
- JToolBar trong Java
- Border trong java
- JList trong Java – JList in Java
- Tùy biến JList – JList custom renderer
- FlowLayout
- GridLayout
- BorderLayout
- BoxLayout
- GridBagLayout
- CardLayout
- SpringLayout
- GroupLayout
Good. Thêm cái Table nữa em. Nói thêm về MVC trong nó nữa 😀
Loạt này em đang viết dở chưa xong. Cái table em không định viết vì thấy 1 TUT 9 bài viết ở codesontrang rất hay, định dẫn link về đây.
MVC sẽ có 😀
Haha, trước anh xem Talbe cũng từ trang đó. 😀
=)) Vâng, tác giả bên đó mà viết tiếp chắc rất nhiều bài hay về java swing =))
không có JScrollPane hả bạn
à, loạt bài này mình đang viết dở, 😀 sẽ cập nhật đủ các đối tượng cơ bản trong thời gian tới nhé!
E chào anh ạ
Anh ơi e muốn hỏi anh chút. Bây giờ e đang muốn làm 1 game giống như đuổi hình bắt chữ trên appStore ấy ạ. Em thiết kế bằng Swing, bây giờ e muốn đưa ra các câu hỏi truy xuất từ cơ sở dữ liệu “từng” câu 1 để cho người chơi trả lời thì e thực hiên như thế nào là được ạ. Em cảm ơn anh nhiều.
Để làm được vậy thì bạn cần kết nối với CSDL của bạn đã. sau đó lấy xuống và load lên frame. Còn việc cho hiển thị từng câu thì bạn dùng 1 vòng lặp thôi. trong vòng lặp bạn cho nó hiện lên, nếu trả lời đúng thì hiện cái tiếp, ko thì thôi.
anh cho e hỏi cái file có đuôi dij sao tạo ra nó vậy anh.
hay
anh cho em hoi tai sao cai panelTextFiled set layout(null) thi textField va label hien thi duoc. con panelButton va panelTable setLayout(null) thi ko the hien thi duoc vay a.
code
package Table;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
@SuppressWarnings(“serial”)
public class TableApp extends JFrame{
private JPanel panelTableApp,panelTableStudent, panelTextField, panelButton;
private JLabel labelIDStudent, labelNameStudent, labelAddressStudent, labelSelect;
private JTextField textFieldIDStudent, textFieldNameStudent, textFieldAddressStudent;
private JButton buttonPush, buttonPop, buttonUpdate, buttonSearch;
private JTable tableStudent;
private ModelTableApp modelTableStudent;
public TableApp() {
super(“Table Application”);
setSize(600, 750);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(createPanelTableApp());
}
private JPanel createPanelTableApp() {
panelTableApp = new JPanel();
panelTableApp.setLayout(null);
panelTableApp.setBounds(25, 25, 550, 700);
panelTableApp.setBorder(BorderFactory.createTitledBorder(null, null, TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION));
panelTableApp.add(createPanelTextField());
panelTableApp.add(createPanelButton());
panelTableApp.add(createPanelTableStudent());
return panelTableApp;
}
private JPanel createPanelTextField() {
panelTextField = new JPanel();
panelTextField.setLayout(null);
panelTextField.setBounds(25, 25, 550, 250);
panelTextField.setBorder(BorderFactory.createTitledBorder(null, null,TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION));
panelTextField.add(createLabelIDStudent());
panelTextField.add(createLabelNameStudent());
panelTextField.add(createLabelAddressStudent());
panelTextField.add(createTextFieldIDStudent());
panelTextField.add(createTextFieldNameStudent());
panelTextField.add(createTextFieldAddressStudent());
return panelTextField;
}
private JPanel createPanelButton() {
panelButton = new JPanel();
panelButton.setLayout(new GridLayout(1, 1, 25, 1));
panelButton.setBounds(25, 300, 550, 35);
panelButton.setBorder(BorderFactory.createTitledBorder(null, null,TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION));
panelButton.add(createButtonPush());
panelButton.add(createButtonPop());
panelButton.add(createButtonUpdate());
panelButton.add(createButtonSearch());
return panelButton;
}
private JPanel createPanelTableStudent() {
panelTableStudent = new JPanel();
panelTableStudent.setLayout(new GridLayout());
panelTableStudent.setBounds(25, 360, 550, 350);
panelTableStudent.setBorder(BorderFactory.createTitledBorder(null, null, TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION));
panelTableStudent.add(new JScrollPane(createTableStudent()));
return panelTableStudent;
}
private JLabel createLabelIDStudent() {
labelIDStudent = new JLabel(“ID”);
labelIDStudent.setBounds(25, 35, 75, 25);
return labelIDStudent;
}
private JLabel createLabelNameStudent() {
labelNameStudent = new JLabel(“Name”);
labelNameStudent.setBounds(25, 115, 75, 25);
return labelNameStudent;
}
private JLabel createLabelAddressStudent() {
labelAddressStudent = new JLabel(“Address”);
labelAddressStudent.setBounds(25, 190, 75, 25);
return labelAddressStudent;
}
private JTextField createTextFieldIDStudent() {
textFieldIDStudent = new JTextField();
textFieldIDStudent.setBounds(125, 25, 375, 50);
return textFieldIDStudent;
}
private JTextField createTextFieldNameStudent() {
textFieldNameStudent = new JTextField();
textFieldNameStudent.setBounds(125, 100, 375, 50);
return textFieldNameStudent;
}
private JTextField createTextFieldAddressStudent() {
textFieldAddressStudent = new JTextField();
textFieldAddressStudent.setBounds(125, 175, 375, 50);
return textFieldAddressStudent;
}
private JButton createButtonPush() {
buttonPush = new JButton(“Push”);
buttonPush.setBounds(125, 250, 75, 25);
return buttonPush;
}
private JButton createButtonPop() {
buttonPop = new JButton(“Pop”);
return buttonPop;
}
private JButton createButtonUpdate() {
buttonUpdate = new JButton(“Update”);
return buttonUpdate;
}
private JButton createButtonSearch() {
buttonSearch = new JButton(“Search”);
return buttonSearch;
}
private JTable createTableStudent() {
tableStudent = new JTable();
tableStudent.setModel(createModelTableStudent());
return tableStudent;
}
private ModelTableApp createModelTableStudent() {
modelTableStudent = new ModelTableApp();
return modelTableStudent;
}
public static void build() {
new TableApp();
}
}
Em cho cái lệnh setVisible(true); xuống cuối hàm nhé.
bài học rất bổ ích ạ. e đang học theo.
cảm ơn anh. mong anh làm thật nhiều dạng ntn để bọn e tham khảo 😀
<3
bác có bài hd về MVC ko? e xin với…đang cần….tks bác!
Rất tiếc là không bạn ah.
Anh cho em hỏi có video nào để học cách kéo thả giao diện với windowBuilder không ạ.
Cái nàu a ko.
có phần mềm lập trình java ko
mấy anh lập trình bằng gì
xin link download với
Bạn có thể dùng eclipse hoặc netbean. Bạn lên google srach là khối 😉
chào anh ạ. Em cũng mới học về ngôn ngữ java . Trên lớp có giao 1 bt làm 1 ứng dụng từ điển = ngôn ngữ java . Anh cho em hỏi nếu muốn thiết kế 1 cái giao diện từ điển thì cần phải học những bài nào trong số các bài trên ạ ?? Tại e có ko nh tg lắm nên tạm thời chắc ko học hết đc @@
Cái này tùy thuộc vào mức độ và cách tạo giao diện của bạn gồm những gì. Nói chung cần gì thì search đó 🙂
đại loại giao diện chỉ cần chỗ nhập từ và tùy chọn chỉnh Anh-Việt , Việt-Anh thôi ạ