text:
Event (sự kiện) là một phần quan trọng của bất kỳ ứng dụng GUI nào. Tất cả các ứng dụng dạng GUI xử lý event trong suốt thời gian mà nó chạy. Event phần lớn được tạo ra bởi người dùng, nhưng cũng có lúc được tạo ra bởi chính ứng dụng. Có ba thành phần tham gia vào hệ thống event:
- Event nguồn
- Đối tượng event
- Đối tượng lắng nghe event
Event nguồn là đối tượng tạo ra sự thay đổi. Cứ có gì đó trong ứng dụng tạo ra sự thay đổi nào đó thì nó chính là event nguồn. Đối tượng event là chính bản thân cái event đó đã được mã hóa. Đối tượng lắng nghe event làm công việc xử lý event đó.
Đối tượng Event
Mỗi khi có thứ gì đó xảy ra thì một đối tượng event sẽ được tạo. Chẳng hạn như khi bạn click vào một button hay chọn một item trong một danh sách. Đối tượng event lưu trữ thông tin về loại sự kiện đã xảy ra. Chúng ta sẽ xem xét thông tin đó trong ví dụ dưới đây.
import java.awt.Container; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JList; public class EventObjectEx extends JFrame { private JList list; private DefaultListModel model; public EventObjectEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); model = new DefaultListModel(); list = new JList(model); list.setMinimumSize(new Dimension(250, 150)); list.setBorder(BorderFactory.createEtchedBorder()); JButton okButton = new JButton("OK"); okButton.addActionListener(new ClickAction()); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(okButton) .addGap(20) .addComponent(list) ); gl.setVerticalGroup(gl.createParallelGroup() .addComponent(okButton) .addComponent(list) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ClickAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { Locale locale = Locale.getDefault(); Date date = new Date(e.getWhen()); String tm = DateFormat.getTimeInstance(DateFormat.SHORT, locale).format(date); if (!model.isEmpty()) { model.clear(); } if (e.getID() == ActionEvent.ACTION_PERFORMED) { model.addElement("Event Id: ACTION_PERFORMED"); } model.addElement("Time: " + tm); String source = e.getSource().getClass().getName(); model.addElement("Source: " + source); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { EventObjectEx ex = new EventObjectEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button và một list, list sẽ hiển thị các thông tin về đối tượng event được gây ra bởi button.
okButton.addActionListener(new ClickAction());
Lớp
ClickAction lắng nghe sự kiện từ button OK.
private class ClickAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { ... } }
Phương thức
actionPerformed() được gọi mỗi lần sự kiện xảy ra, phương thức này nhận tham số là một đối tượng
ActionEvent.
Locale locale = Locale.getDefault(); Date date = new Date(e.getWhen()); String s = DateFormat.getTimeInstance(DateFormat.SHORT, locale).format(date);
Chúng ta có thể lấy thời điểm event xảy ra từ phương thức
getWhen(), thời gian trong phương thức này tính theo mili giây nên chúng ta phải định dạng lại cho phù hợp.
String source = e.getSource().getClass().getName(); model.addElement("Source: " + source);
Chúng ta có thể lấy được thông tin về đối tượng gây ra event từ phương thức
getSource() và một số thông tin bên trong lớp đó.
Tạo đối tượng lắng nghe sự kiện
Có 3 cách để tạo một đối tượng lắng nghe sự kiện trong Java Swing.
- Tạo lớp ẩn nội (Anonymous Inner class)
- Tạo lớp nội (Inner class)
- Tạo lớp kế thừa (Derived class)
Tạo lớp ẩn nội
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class AnonymousInnerClassEx extends JFrame { public AnonymousInnerClassEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); JButton closeButton = new JButton("Close"); closeButton.setBounds(40, 50, 80, 25); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } }); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { AnonymousInnerClassEx ex = new AnonymousInnerClassEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một đối tượng lắng nghe sự kiện từ một button.
JButton closeButton = new JButton("Close");
Khi click button thì thoát chương trình.
closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } });
Để gắn một đối tượng lắng nghe vào một component thì chúng ta dùng phương thức
addActionListener(). Ở đây chúng ta dùng lớp “ẩn nội”, nếu bạn chưa biết thì tức là tạo một đối tượng và code các phương thức trừu tượng ngay bên trong một phương thức khác.
Tạo lớp nội
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class InnerClassExample extends JFrame { public InnerClassExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); JButton closeButton = new JButton("Close"); ButtonCloseListener listener = new ButtonCloseListener(); closeButton.addActionListener(listener); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonCloseListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { InnerClassExample ex = new InnerClassExample(); ex.setVisible(true); } }); } }
Ví dụ này cũng giống ví dụ trên, chỉ khác là chúng ta dùng lớp “nội”: định nghĩa một lớp bên trong một lớp khác, tuy nhiên các lớp này phải được implements từ lớp
ActionListener.
private class ButtonCloseListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }
Tạo lớp kế thừa
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class DerivedClassExample extends JFrame { public DerivedClassExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); MyButton closeButton = new MyButton("Close"); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class MyButton extends JButton implements ActionListener { public MyButton(String text) { super.setText(text); addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { System.exit(0); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { DerivedClassExample ex = new DerivedClassExample(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta cũng tạo một button có chức năng thoát chương trình, nhưng ở đây chúng ta tạo một lớp kế thừa từ lớp
JButton là implements sẵn giao diện
ActionListener.
Tức là bản thân lớp này đã tự động lắng nghe các sự kiện click rồi, không cần phải dùng đến phương thức
addActionListener() như với lớp ẩn nội nữa.
private class MyButton extends JButton implements ActionListener { public MyButton(String text) { super.setText(text); addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }
Gắn một listener vào nhiều component
Một listener có thể lắng nghe từ nhiều component khác nhau.
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JLabel; import javax.swing.JPanel; public class MultipleSources extends JFrame { private JLabel statusbar; public MultipleSources() { initUI(); } private void initUI() { JPanel panel = new JPanel(); GroupLayout gl = new GroupLayout(panel); panel.setLayout(gl); statusbar = new JLabel("Ready"); statusbar.setBorder(BorderFactory.createEtchedBorder()); ButtonListener butlist = new ButtonListener(); JButton closeButton = new JButton("Close"); closeButton.addActionListener(butlist); JButton openButton = new JButton("Open"); openButton.addActionListener(butlist); JButton findButton = new JButton("Find"); findButton.addActionListener(butlist); JButton saveButton = new JButton("Save"); saveButton.addActionListener(butlist); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(closeButton) .addComponent(openButton) .addComponent(findButton) .addComponent(saveButton) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addComponent(openButton) .addComponent(findButton) .addComponent(saveButton) .addGap(20) ); gl.linkSize(closeButton, openButton, findButton, saveButton); add(panel, BorderLayout.CENTER); add(statusbar, BorderLayout.SOUTH); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton o = (JButton) e.getSource(); String label = o.getText(); statusbar.setText(" " + label + " button clicked"); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MultipleSources ms = new MultipleSources(); ms.setVisible(true); } }); } }
Chúng ta tạo 4 button và một statusbar. Statusbar sẽ hiển thị thông tin tùy vào button nào được click.
JButton closeButton = new JButton("Close"); closeButton.addActionListener(butlist); JButton openButton = new JButton("Open"); openButton.addActionListener(butlist); ...
Ở đây chúng ta tạo lớp nội
ButtonListener và gắn vào từng button.
private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton o = (JButton) e.getSource(); String label = o.getText(); statusbar.setText(" " + label + " button clicked"); } }
Đoạn text trên statusbar được hiển thị tùy theo từng button.
Gắn nhiều listener vào một component
Nếu có thể dùng một listener cho nhiều component thì cũng có thể gắn nhiều listener vào một component.
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import static javax.swing.GroupLayout.Alignment.CENTER; import static javax.swing.GroupLayout.DEFAULT_SIZE; import static javax.swing.GroupLayout.PREFERRED_SIZE; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerModel; import javax.swing.SpinnerNumberModel; public class MultipleListeners extends JFrame { private JLabel statusbar; private JSpinner spinner; private int count = 0; public MultipleListeners() { initUI(); } private void initUI() { JPanel panel = new JPanel(); GroupLayout gl = new GroupLayout(panel); panel.setLayout(gl); add(panel, BorderLayout.CENTER); statusbar = new JLabel("0"); statusbar.setBorder(BorderFactory.createEtchedBorder()); add(statusbar, BorderLayout.SOUTH); JButton addButton = new JButton("+"); addButton.addActionListener(new ButtonListener1()); addButton.addActionListener(new ButtonListener2()); Calendar calendar = Calendar.getInstance(); int currentYear = calendar.get(Calendar.YEAR); SpinnerModel yearModel = new SpinnerNumberModel(currentYear, currentYear - 100, currentYear + 100, 1); spinner = new JSpinner(yearModel); spinner.setEditor(new JSpinner.NumberEditor(spinner, "#")); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(addButton) .addGap(20) .addComponent(spinner, DEFAULT_SIZE, DEFAULT_SIZE, PREFERRED_SIZE) ); gl.setVerticalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup(CENTER) .addComponent(addButton) .addComponent(spinner, DEFAULT_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)) ); pack(); setTitle("Event Example"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener1 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Integer val = (Integer) spinner.getValue(); spinner.setValue(++val); } } private class ButtonListener2 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { statusbar.setText(Integer.toString(++count)); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MultipleListeners ml = new MultipleListeners(); ml.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button, một spinner và một statusbar. Chúng ta định nghĩa 2 listener và gắn cả hai listener này vào button, một listener sẽ thay đổi giá trị trên spinner, một listener sẽ thay đổi đoạn text trong statusbar.
SpinnerModel yearModel = new SpinnerNumberModel(currentYear, currentYear - 100, currentYear + 100, 1); spinner = new JSpinner(yearModel);
Chúng ta khởi tạo một đối tượng
SpinnerModel, bạn có thể hiểu đối tượng này làm công việc khởi tạo giá trị cho
JSpinner, tham số đầu tiên là giá trị khởi tạo, tham số thứ 2 và thứ 3 là giá trị min và max trong listener, tham số thứ 4 là giá trị tăng thêm lên bao nhiêu sau mỗi lần click vào spinner.
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
Dòng code trên có tác dụng loại bỏ dấu phẩy trong định dạng số (2,016 → 2016).
private class ButtonListener1 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Integer val = (Integer) spinner.getValue(); spinner.setValue(++val); } }
Listener thứ nhất thay đổi giá trị của spinner.
private class ButtonListener2 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { statusbar.setText(Integer.toString(++count)); } }
Listener thứ hai làm công việc thay đổi đoạn text trong statusbar.
Gỡ bỏ listener ra khỏi component
Để làm việc này thì chỉ đơn giản là dùng phương thức
removeActionListener().
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; public class RemoveListenerEx extends JFrame { private JLabel lbl; private JButton addButton; private JCheckBox activeBox; private ButtonListener buttonlistener; private int count = 0; public RemoveListenerEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addButton = new JButton("+"); buttonlistener = new ButtonListener(); activeBox = new JCheckBox("Active listener"); activeBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent event) { if (activeBox.isSelected()) { addButton.addActionListener(buttonlistener); } else { addButton.removeActionListener(buttonlistener); } } }); lbl = new JLabel("0"); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup() .addComponent(addButton) .addComponent(lbl)) .addGap(30) .addComponent(activeBox) ); gl.setVerticalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup() .addComponent(addButton) .addComponent(activeBox)) .addGap(30) .addComponent(lbl) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { lbl.setText(Integer.toString(++count)); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { RemoveListenerEx ex = new RemoveListenerEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button, một checkbox và một label. Button được gắn một listener và chỉ khi checkbox được check thì listener này mới lắng nghe sự kiện từ button.
buttonlistener = new ButtonListener();
Lớp listener được tạo ra phải là lớp không ẩn thì mới có thể gỡ ra khỏi component được,
if (activeBox.isSelected()) { addButton.addActionListener(buttonlistener); } else { addButton.removeActionListener(buttonlistener); }
Chúng ta kiểm tra nếu checkbox được check thì gắn listener vào còn không nếu thì gỡ ra.
Xử lý sự kiện di chuyển
Trong ví dụ này chúng ta tìm hiểu về cách bắt sự kiện có liên quan đến sự hiện diện của component.
import java.awt.Container; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JLabel; public class MovingWindowEx extends JFrame implements ComponentListener { private JLabel labelx; private JLabel labely; public MovingWindowEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addComponentListener(this); labelx = new JLabel("x: "); labelx.setFont(new Font("Serif", Font.BOLD, 14)); labelx.setBounds(20, 20, 60, 25); labely = new JLabel("y: "); labely.setFont(new Font("Serif", Font.BOLD, 14)); labely.setBounds(20, 45, 60, 25); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(labelx) .addComponent(labely) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(labelx) .addComponent(labely) .addGap(130) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void componentResized(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } @Override public void componentShown(ComponentEvent e) { } @Override public void componentHidden(ComponentEvent e) { } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MovingWindowEx ex = new MovingWindowEx(); ex.setVisible(true); } }); } }
Chúng ta sẽ gắn một listener vào cửa sổ chính để lấy tọa độ của cửa sổ trên màn hình.
public class MovingWindowExample extends JFrame implements ComponentListener {
Giao diện
ComponentListener là giao diện dùng để lắng nghe các sự kiện liên quan đến sự xuất hiện của component.
@Override public void componentResized(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } @Override public void componentShown(ComponentEvent e) { } @Override public void componentHidden(ComponentEvent e) { }
Theo luật của Java thì chúng ta phải override toàn bộ phương thức ảo nhưng ở đây chúng ta chỉ quan tâm tới phương thức
componentMoved() thôi.
int x = e.getComponent().getX(); int y = e.getComponent().getY();
Để lấy tọa độ của component thì chúng ta dùng phương thức
getX() và
getY().
Sử dụng lớp Adapter thay thế cho Listener
Trong ví dụ trên chúng ta implement giao diện
ComponentListener và phải override toàn bộ các phương thức ảo trong giao diện này, như thế rất khó chịu, chính vì thế và Java đã tạo ra các lớp adapter. Adapter đơn giản là các lớp đã implement sẵn các lớp listener tương ứng và override toàn bộ phương thức ảo trước rồi. Vì thế nên khi dùng adapter chúng ta chỉ cần dùng các phương thức mà chúng ta muốn thôi.
Ví dụ:
- Giao diện
ComponentListenerbắt buộc bạn phải override các phương thức ảo
componentResized(),
componentMoved(),
componentShown(), và
componentHidden()mặc dù bạn không muốn.
- Lớp
ComponentAdapterđã implement sẵn giao diện
ComponentListenervà override toàn bộ các phương thức ảo trên rồi, bạn chỉ cần override lại phương thức mà bạn muốn.
Ví dụ dưới đây giống như ví dụ ở trên, chỉ khác là chúng ta dùng lớp
ComponentAdapter.
import java.awt.Container; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JLabel; public class AdapterExample extends JFrame { private JLabel labelx; private JLabel labely; public AdapterExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addComponentListener(new MoveAdapter()); labelx = new JLabel("x: "); labelx.setFont(new Font("Serif", Font.BOLD, 14)); labely = new JLabel("y: "); labely.setFont(new Font("Serif", Font.BOLD, 14)); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(labelx) .addComponent(labely) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(labelx) .addComponent(labely) .addGap(130) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class MoveAdapter extends ComponentAdapter { @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { AdapterExample ex = new AdapterExample(); ex.setVisible(true); } }); } }

markdown:
Event (sự kiện) là một phần quan trọng của bất kỳ ứng dụng GUI nào. Tất cả các ứng dụng dạng GUI xử lý event trong suốt thời gian mà nó chạy. Event phần lớn được tạo ra bởi người dùng, nhưng cũng có lúc được tạo ra bởi chính ứng dụng. Có ba thành phần tham gia vào hệ thống event:
- Event nguồn
- Đối tượng event
- Đối tượng lắng nghe event
** là đối tượng tạo ra sự thay đổi. Cứ có gì đó trong ứng dụng tạo ra sự thay đổi nào đó thì nó chính là event nguồn. Event nguồn** **là chính bản thân cái event đó đã được mã hóa.** *Đối tượng event* **Đối tượng lắng nghe** **e** *làm công việc xử lý event đó.* **vent**
## Đối tượng Event
Mỗi khi có thứ gì đó xảy ra thì một đối tượng event sẽ được tạo. Chẳng hạn như khi bạn click vào một button hay chọn một item trong một danh sách. Đối tượng event lưu trữ thông tin về loại sự kiện đã xảy ra. Chúng ta sẽ xem xét thông tin đó trong ví dụ dưới đây.
import java.awt.Container; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JList; public class EventObjectEx extends JFrame { private JList list; private DefaultListModel model; public EventObjectEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); model = new DefaultListModel(); list = new JList(model); list.setMinimumSize(new Dimension(250, 150)); list.setBorder(BorderFactory.createEtchedBorder()); JButton okButton = new JButton("OK"); okButton.addActionListener(new ClickAction()); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(okButton) .addGap(20) .addComponent(list) ); gl.setVerticalGroup(gl.createParallelGroup() .addComponent(okButton) .addComponent(list) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ClickAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { Locale locale = Locale.getDefault(); Date date = new Date(e.getWhen()); String tm = DateFormat.getTimeInstance(DateFormat.SHORT, locale).format(date); if (!model.isEmpty()) { model.clear(); } if (e.getID() == ActionEvent.ACTION_PERFORMED) { model.addElement("Event Id: ACTION_PERFORMED"); } model.addElement("Time: " + tm); String source = e.getSource().getClass().getName(); model.addElement("Source: " + source); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { EventObjectEx ex = new EventObjectEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button và một list, list sẽ hiển thị các thông tin về đối tượng event được gây ra bởi button.
okButton.addActionListener(new ClickAction());
Lớp
ClickAction lắng nghe sự kiện từ button OK.
private class ClickAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { ... } }
Phương thức
actionPerformed() được gọi mỗi lần sự kiện xảy ra, phương thức này nhận tham số là một đối tượng
ActionEvent.
Locale locale = Locale.getDefault(); Date date = new Date(e.getWhen()); String s = DateFormat.getTimeInstance(DateFormat.SHORT, locale).format(date);
Chúng ta có thể lấy thời điểm event xảy ra từ phương thức
getWhen(), thời gian trong phương thức này tính theo mili giây nên chúng ta phải định dạng lại cho phù hợp.
String source = e.getSource().getClass().getName(); model.addElement("Source: " + source);
Chúng ta có thể lấy được thông tin về đối tượng gây ra event từ phương thức
getSource() và một số thông tin bên trong lớp đó.
![ Capturaae](https://i0.wp.com/phocode.com/wp-content/uploads/2016/03/Capturaae.jpg?resize=300%2C193)
![ Capturaae](https://i0.wp.com/phocode.com/wp-content/uploads/2016/03/Capturaae.jpg?resize=300%2C193)
## Tạo đối tượng lắng nghe sự kiện
Có 3 cách để tạo một đối tượng lắng nghe sự kiện trong Java Swing.
- Tạo lớp ẩn nội (
*Anonymous Inner*class)
- Tạo lớp nội (
*Inner*class)
- Tạo lớp kế thừa (
*Derived*class)
## Tạo lớp ẩn nội
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class AnonymousInnerClassEx extends JFrame { public AnonymousInnerClassEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); JButton closeButton = new JButton("Close"); closeButton.setBounds(40, 50, 80, 25); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } }); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { AnonymousInnerClassEx ex = new AnonymousInnerClassEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một đối tượng lắng nghe sự kiện từ một button.
JButton closeButton = new JButton("Close");
Khi click button thì thoát chương trình.
closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } });
Để gắn một đối tượng lắng nghe vào một component thì chúng ta dùng phương thức
addActionListener(). Ở đây chúng ta dùng lớp “ẩn nội”, nếu bạn chưa biết thì tức là tạo một đối tượng và code các phương thức trừu tượng ngay bên trong một phương thức khác.
## Tạo lớp nội
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class InnerClassExample extends JFrame { public InnerClassExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); JButton closeButton = new JButton("Close"); ButtonCloseListener listener = new ButtonCloseListener(); closeButton.addActionListener(listener); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonCloseListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { InnerClassExample ex = new InnerClassExample(); ex.setVisible(true); } }); } }
Ví dụ này cũng giống ví dụ trên, chỉ khác là chúng ta dùng lớp “nội”: định nghĩa một lớp bên trong một lớp khác, tuy nhiên các lớp này phải được implements từ lớp
ActionListener.
private class ButtonCloseListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }
## Tạo lớp kế thừa
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; public class DerivedClassExample extends JFrame { public DerivedClassExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); MyButton closeButton = new MyButton("Close"); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(220) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addGap(180) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class MyButton extends JButton implements ActionListener { public MyButton(String text) { super.setText(text); addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { System.exit(0); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { DerivedClassExample ex = new DerivedClassExample(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta cũng tạo một button có chức năng thoát chương trình, nhưng ở đây chúng ta tạo một lớp kế thừa từ lớp
JButton là implements sẵn giao diện
ActionListener.
Tức là bản thân lớp này đã tự động lắng nghe các sự kiện click rồi, không cần phải dùng đến phương thức
addActionListener() như với lớp ẩn nội nữa.
private class MyButton extends JButton implements ActionListener { public MyButton(String text) { super.setText(text); addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }
## Gắn một listener vào nhiều component
Một listener có thể lắng nghe từ nhiều component khác nhau.
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JLabel; import javax.swing.JPanel; public class MultipleSources extends JFrame { private JLabel statusbar; public MultipleSources() { initUI(); } private void initUI() { JPanel panel = new JPanel(); GroupLayout gl = new GroupLayout(panel); panel.setLayout(gl); statusbar = new JLabel("Ready"); statusbar.setBorder(BorderFactory.createEtchedBorder()); ButtonListener butlist = new ButtonListener(); JButton closeButton = new JButton("Close"); closeButton.addActionListener(butlist); JButton openButton = new JButton("Open"); openButton.addActionListener(butlist); JButton findButton = new JButton("Find"); findButton.addActionListener(butlist); JButton saveButton = new JButton("Save"); saveButton.addActionListener(butlist); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(closeButton) .addComponent(openButton) .addComponent(findButton) .addComponent(saveButton) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(closeButton) .addComponent(openButton) .addComponent(findButton) .addComponent(saveButton) .addGap(20) ); gl.linkSize(closeButton, openButton, findButton, saveButton); add(panel, BorderLayout.CENTER); add(statusbar, BorderLayout.SOUTH); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton o = (JButton) e.getSource(); String label = o.getText(); statusbar.setText(" " + label + " button clicked"); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MultipleSources ms = new MultipleSources(); ms.setVisible(true); } }); } }
Chúng ta tạo 4 button và một statusbar. Statusbar sẽ hiển thị thông tin tùy vào button nào được click.
JButton closeButton = new JButton("Close"); closeButton.addActionListener(butlist); JButton openButton = new JButton("Open"); openButton.addActionListener(butlist); ...
Ở đây chúng ta tạo lớp nội
ButtonListener và gắn vào từng button.
private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton o = (JButton) e.getSource(); String label = o.getText(); statusbar.setText(" " + label + " button clicked"); } }
Đoạn text trên statusbar được hiển thị tùy theo từng button.
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-8.jpg?resize=300%2C238)
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-8.jpg?resize=300%2C238)
## Gắn nhiều listener vào một component
Nếu có thể dùng một listener cho nhiều component thì cũng có thể gắn nhiều listener vào một component.
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import static javax.swing.GroupLayout.Alignment.CENTER; import static javax.swing.GroupLayout.DEFAULT_SIZE; import static javax.swing.GroupLayout.PREFERRED_SIZE; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerModel; import javax.swing.SpinnerNumberModel; public class MultipleListeners extends JFrame { private JLabel statusbar; private JSpinner spinner; private int count = 0; public MultipleListeners() { initUI(); } private void initUI() { JPanel panel = new JPanel(); GroupLayout gl = new GroupLayout(panel); panel.setLayout(gl); add(panel, BorderLayout.CENTER); statusbar = new JLabel("0"); statusbar.setBorder(BorderFactory.createEtchedBorder()); add(statusbar, BorderLayout.SOUTH); JButton addButton = new JButton("+"); addButton.addActionListener(new ButtonListener1()); addButton.addActionListener(new ButtonListener2()); Calendar calendar = Calendar.getInstance(); int currentYear = calendar.get(Calendar.YEAR); SpinnerModel yearModel = new SpinnerNumberModel(currentYear, currentYear - 100, currentYear + 100, 1); spinner = new JSpinner(yearModel); spinner.setEditor(new JSpinner.NumberEditor(spinner, "#")); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addComponent(addButton) .addGap(20) .addComponent(spinner, DEFAULT_SIZE, DEFAULT_SIZE, PREFERRED_SIZE) ); gl.setVerticalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup(CENTER) .addComponent(addButton) .addComponent(spinner, DEFAULT_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)) ); pack(); setTitle("Event Example"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener1 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Integer val = (Integer) spinner.getValue(); spinner.setValue(++val); } } private class ButtonListener2 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { statusbar.setText(Integer.toString(++count)); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MultipleListeners ml = new MultipleListeners(); ml.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button, một spinner và một statusbar. Chúng ta định nghĩa 2 listener và gắn cả hai listener này vào button, một listener sẽ thay đổi giá trị trên spinner, một listener sẽ thay đổi đoạn text trong statusbar.
SpinnerModel yearModel = new SpinnerNumberModel(currentYear, currentYear - 100, currentYear + 100, 1); spinner = new JSpinner(yearModel);
Chúng ta khởi tạo một đối tượng
SpinnerModel, bạn có thể hiểu đối tượng này làm công việc khởi tạo giá trị cho
JSpinner, tham số đầu tiên là giá trị khởi tạo, tham số thứ 2 và thứ 3 là giá trị min và max trong listener, tham số thứ 4 là giá trị tăng thêm lên bao nhiêu sau mỗi lần click vào spinner.
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
Dòng code trên có tác dụng loại bỏ dấu phẩy trong định dạng số (2,016 → 2016).
private class ButtonListener1 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Integer val = (Integer) spinner.getValue(); spinner.setValue(++val); } }
Listener thứ nhất thay đổi giá trị của spinner.
private class ButtonListener2 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { statusbar.setText(Integer.toString(++count)); } }
Listener thứ hai làm công việc thay đổi đoạn text trong statusbar.
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-4.jpg?resize=300%2C300)
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-4.jpg?resize=300%2C300)
## Gỡ bỏ listener ra khỏi component
Để làm việc này thì chỉ đơn giản là dùng phương thức
removeActionListener().
import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; public class RemoveListenerEx extends JFrame { private JLabel lbl; private JButton addButton; private JCheckBox activeBox; private ButtonListener buttonlistener; private int count = 0; public RemoveListenerEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addButton = new JButton("+"); buttonlistener = new ButtonListener(); activeBox = new JCheckBox("Active listener"); activeBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent event) { if (activeBox.isSelected()) { addButton.addActionListener(buttonlistener); } else { addButton.removeActionListener(buttonlistener); } } }); lbl = new JLabel("0"); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup() .addComponent(addButton) .addComponent(lbl)) .addGap(30) .addComponent(activeBox) ); gl.setVerticalGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup() .addComponent(addButton) .addComponent(activeBox)) .addGap(30) .addComponent(lbl) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class ButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { lbl.setText(Integer.toString(++count)); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { RemoveListenerEx ex = new RemoveListenerEx(); ex.setVisible(true); } }); } }
Trong ví dụ này chúng ta tạo một button, một checkbox và một label. Button được gắn một listener và chỉ khi checkbox được check thì listener này mới lắng nghe sự kiện từ button.
buttonlistener = new ButtonListener();
Lớp listener được tạo ra phải là lớp không ẩn thì mới có thể gỡ ra khỏi component được,
if (activeBox.isSelected()) { addButton.addActionListener(buttonlistener); } else { addButton.removeActionListener(buttonlistener); }
Chúng ta kiểm tra nếu checkbox được check thì gắn listener vào còn không nếu thì gỡ ra.
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-5.jpg?resize=300%2C169)
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-5.jpg?resize=300%2C169)
## Xử lý sự kiện di chuyển
Trong ví dụ này chúng ta tìm hiểu về cách bắt sự kiện có liên quan đến sự hiện diện của component.
import java.awt.Container; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JLabel; public class MovingWindowEx extends JFrame implements ComponentListener { private JLabel labelx; private JLabel labely; public MovingWindowEx() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addComponentListener(this); labelx = new JLabel("x: "); labelx.setFont(new Font("Serif", Font.BOLD, 14)); labelx.setBounds(20, 20, 60, 25); labely = new JLabel("y: "); labely.setFont(new Font("Serif", Font.BOLD, 14)); labely.setBounds(20, 45, 60, 25); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(labelx) .addComponent(labely) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(labelx) .addComponent(labely) .addGap(130) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void componentResized(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } @Override public void componentShown(ComponentEvent e) { } @Override public void componentHidden(ComponentEvent e) { } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MovingWindowEx ex = new MovingWindowEx(); ex.setVisible(true); } }); } }
Chúng ta sẽ gắn một listener vào cửa sổ chính để lấy tọa độ của cửa sổ trên màn hình.
public class MovingWindowExample extends JFrame implements ComponentListener {
Giao diện
ComponentListener là giao diện dùng để lắng nghe các sự kiện liên quan đến sự xuất hiện của component.
@Override public void componentResized(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } @Override public void componentShown(ComponentEvent e) { } @Override public void componentHidden(ComponentEvent e) { }
Theo luật của Java thì chúng ta phải override toàn bộ phương thức ảo nhưng ở đây chúng ta chỉ quan tâm tới phương thức
componentMoved() thôi.
int x = e.getComponent().getX(); int y = e.getComponent().getY();
Để lấy tọa độ của component thì chúng ta dùng phương thức
getX() và
getY().
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-6.jpg?resize=300%2C251)
![ Capture](https://i1.wp.com/phocode.com/wp-content/uploads/2016/03/Capture-6.jpg?resize=300%2C251)
## Sử dụng lớp Adapter thay thế cho Listener
Trong ví dụ trên chúng ta implement giao diện
ComponentListener và phải override toàn bộ các phương thức ảo trong giao diện này, như thế rất khó chịu, chính vì thế và Java đã tạo ra các lớp adapter. Adapter đơn giản là các lớp đã implement sẵn các lớp listener tương ứng và override toàn bộ phương thức ảo trước rồi. Vì thế nên khi dùng adapter chúng ta chỉ cần dùng các phương thức mà chúng ta muốn thôi.
Ví dụ:
- Giao diện
ComponentListenerbắt buộc bạn phải override các phương thức ảo
componentResized(),
componentMoved(),
componentShown(), và
componentHidden()mặc dù bạn không muốn.
- Lớp
ComponentAdapterđã implement sẵn giao diện
ComponentListenervà override toàn bộ các phương thức ảo trên rồi, bạn chỉ cần override lại phương thức mà bạn muốn.
Ví dụ dưới đây giống như ví dụ ở trên, chỉ khác là chúng ta dùng lớp
ComponentAdapter.
import java.awt.Container; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JLabel; public class AdapterExample extends JFrame { private JLabel labelx; private JLabel labely; public AdapterExample() { initUI(); } private void initUI() { Container pane = getContentPane(); GroupLayout gl = new GroupLayout(pane); pane.setLayout(gl); addComponentListener(new MoveAdapter()); labelx = new JLabel("x: "); labelx.setFont(new Font("Serif", Font.BOLD, 14)); labely = new JLabel("y: "); labely.setFont(new Font("Serif", Font.BOLD, 14)); gl.setAutoCreateContainerGaps(true); gl.setAutoCreateGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() .addComponent(labelx) .addComponent(labely) .addGap(250) ); gl.setVerticalGroup(gl.createSequentialGroup() .addComponent(labelx) .addComponent(labely) .addGap(130) ); pack(); setTitle("Event Example"); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class MoveAdapter extends ComponentAdapter { @Override public void componentMoved(ComponentEvent e) { int x = e.getComponent().getX(); int y = e.getComponent().getY(); labelx.setText("x: " + x); labely.setText("y: " + y); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { AdapterExample ex = new AdapterExample(); ex.setVisible(true); } }); } }

Server: nginx centminmod

Link: <http://wp.me/p76d4i-7b>; rel=shortlink

Vary: Accept-Encoding, Cookie


text:
Kế hoạch công tác phổ biến, giáo dục pháp luật năm 2017
PhuthoPortal - Ngày 25/1/2017, UBND tỉnh đã ban hành Kế hoạch số 330/KH-UBND về công tác phổ biến, giáo dục pháp luật năm 2017.
Kế hoạch Tổng kết Đề án “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013 – 2016” trên địa bàn tỉnh Phú Thọ
PhuthoPortal - Ngày 18/5, Ban Chỉ đạo Đề án: “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013-2016” (Đề án 1-1133) tỉnh đã ban hành Kế hoạch Tổng kết Đề án “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013 – 2016” trên địa bàn tỉnh Phú Thọ.
Chín điểm mới của Luật Báo chí
Bộ trưởng Bộ Thông tin và Truyền thông Nguyễn Bắc Son chia sẻ về những điểm mới của Dự thảo Luật Báo chí vừa được Quốc hội biểu quyết thông qua sáng nay (5/4/2016).
Kế hoạch thực hiện Chương trình thúc đẩy quyền tham gia của trẻ em vào các vấn đề trẻ em tỉnh Phú Thọ giai đoạn 2016-2020
PhuthoPortal – Ngày 17/3/2016, UBND tỉnh ban hành Kế hoạch số 880/KH-UBND về thực hiện Chương trình thúc đẩy quyền tham gia của trẻ em vào các vấn đề trẻ em tỉnh Phú Thọ giai đoạn 2016-2020.
Kế hoạch thực hiện công tác phòng, chống tội phạm năm 2016
PhuthoPortal – Ngày 9/3/2016, Ban Chỉ đạo phòng, chống tội phạm, tệ nạn xã hội, HIV/AIDS và phong trào toàn dân bảo vệ ANTQ tỉnh ban hành Kế hoạch số 777/KH-BCĐ về thực hiện công tác phòng, chống tội phạm năm 2016.

markdown:
![Links Manager Links Manager](/VCMS-portlet/html/portlet/vcmsviewcontent/images/icon.png)
### Kế hoạch công tác phổ biến, giáo dục pháp luật năm 2017
PhuthoPortal - Ngày 25/1/2017, UBND tỉnh đã ban hành Kế hoạch số 330/KH-UBND về công tác phổ biến, giáo dục pháp luật năm 2017.
### Kế hoạch Tổng kết Đề án “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013 – 2016” trên địa bàn tỉnh Phú Thọ
PhuthoPortal - Ngày 18/5, Ban Chỉ đạo Đề án: “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013-2016” (Đề án 1-1133) tỉnh đã ban hành Kế hoạch Tổng kết Đề án “Tiếp tục tăng cường công tác phổ biến, giáo dục pháp luật về khiếu nại, tố cáo ở xã, phường, thị trấn giai đoạn 2013 – 2016” trên địa bàn tỉnh Phú Thọ.
[](http://phutho.gov.vn/phapluat/-/vcmsviewcontent/9w8N/9181/228553/chin-iem-moi-cua-luat-bao-chi.html;jsessionid=A58EB8B0F97A55303F1207AA0433317F?_vcmsviewcontent_WAR_VCMSportlet_INSTANCE_9w8N_redirect=%2Fphapluat%2F-%2Fvcmsviewcontent%2F9w8N%2F9181%2F240575%2Fke-hoach-tong-ket-e-an-tiep-tuc-tang-cuong-cong-tac-pho-bien-giao-duc-phap-luat-ve-khieu-nai-to-cao-o-xa-phuong-thi-tran-giai-oan-2013-2016-tren-ia-ban-tinh-phu-tho.html%3F_vcmsviewcontent_WAR_VCMSportlet_INSTANCE_9w8N_redirect%3D%252Fweb%252Fguest%252Fphapluat)
### Chín điểm mới của Luật Báo chí
Bộ trưởng Bộ Thông tin và Truyền thông Nguyễn Bắc Son chia sẻ về những điểm mới của Dự thảo Luật Báo chí vừa được Quốc hội biểu quyết thông qua sáng nay (5/4/2016).
### Kế hoạch thực hiện Chương trình thúc đẩy quyền tham gia của trẻ em vào các vấn đề trẻ em tỉnh Phú Thọ giai đoạn 2016-2020
PhuthoPortal – Ngày 17/3/2016, UBND tỉnh ban hành Kế hoạch số 880/KH-UBND về thực hiện Chương trình thúc đẩy quyền tham gia của trẻ em vào các vấn đề trẻ em tỉnh Phú Thọ giai đoạn 2016-2020.
### Kế hoạch thực hiện công tác phòng, chống tội phạm năm 2016
PhuthoPortal – Ngày 9/3/2016, Ban Chỉ đạo phòng, chống tội phạm, tệ nạn xã hội, HIV/AIDS và phong trào toàn dân bảo vệ ANTQ tỉnh ban hành Kế hoạch số 777/KH-BCĐ về thực hiện công tác phòng, chống tội phạm năm 2016.

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

Set-Cookie: COOKIE_SUPPORT=true; Expires=Tue, 20-Feb-2018 01:39:17 GMT; Path=/

Connection: close


text:
Sở Kế hoạch Đầu tư Thành phố Hồ Chí Minh - Các bước thực hiện đăng ký doanh nghiệp
Cập nhật lúc: 07h01 ngày 09/11/2013
Đăng lúc: 21h35 ngày 15/08/2013 - TP.Hồ Chí Minh
Đã xem 744 Mã tin 101340155
songnguyentrung@gmail.com | Gửi tin nhắn
CÔNG TY TƯ VẤN THÀNH LẬP DOANH NGHIỆP SONG NGUYỄN
Địa chỉ : 224/7/15 Ung Văn Khiêm Phường 25, Quận Bình Thạnh
105 Phạm Hùng, Ấp 1, Xã Phước Lộc, Huyện Nhà Bè
Tell: 08 – 22 377 036 - 0909 47 63 64 – 0909 47 63 67
Email: Songnguyentrung@gmail.com - giayphepkinhdoanh6364@gmail.com
Website: Dichvugiayphepkinhdoanh.com.vn
Công Ty Tư Vấn Song Nguyễn kính gửi lời chúc sức khỏe và thành đạt đến Quý khách. Cảm ơn sự tin tưởng ủng hộ và quan tâm của Quý khách đối với Công Ty Chúng tôi trong thời gian qua !
Chuyeân Ngaønh
TƯ VẤN THÀNH LẬP DOANH NGHIỆP
DỊCH VỤ KẾ TOÁN
ĐĂNG KÝ THƯƠNG HIỆU – LOGO
THẨM ĐỊNH GIÁ VÀ HỖ TRỢ VAY VỐN NGÂN HÀNG
DỊCH VỤ GIẤY PHÉP KINH DOANH MÔI GIỚI – KINH DOANH BẤT ĐỘNG SẢN – BẢO VỆ ( VỆ SĨ )
Tư vấn:
Ø Tư vấn miễn giảm thuế trong 2 năm đầu theo Luật Thuế.
Ø Hoàn thành sổ sách kế toán có lợi nhất.
Ø Hỗ trợ vốn vay đầu tư các dự án.
Ø Được phục vụ tận tình – Hồ sơ nhanh chóng – Chi phí thấp – Hiệu quả cao.
Chúng tôi luôn hoạt động theo tiêu chí: “ LẤY SỰ THÀNH CÔNG CỦA KHÁCH HÀNG LÀM SỰ THÀNH CÔNG CHO CHÍNH MÌNH ”.
THỦ TỤC NHANH CHÓNG – RÕ RÀNG – CHI PHÍ HỢP LÝ
Tư vấn lựa chọn loại hình kinh doanh phù hợp với ngành nghề và quy mô: Công ty Cổ Phần, Công ty TNHH, Doanh nghiệp tư nhân,…
Tư vấn thủ tục pháp lý và lập hồ sơ liên quan đến quá trình thành lập và quản lý doanh nghiệp,
Tư vấn những điều kiện trước khi thành lập và sau khi thành lập đối với nghành nghề đăng ký kinh doanh.
Tư vấn về vốn đầu tư ban đầu, vốn pháp định, vốn điều lệ…
Tư vấn chi tiết cho doanh nghiệp các vấn đề về thuế, các nghĩa vụ về tài chính sau khi đăng ký kinh doanh và quá trình hoạt động sản xuất kinh doanh
Tư vấn về cơ cấu nhân sự, quyền hạn, nghĩa vụ của các thành viên/cổ đông trong công ty.
1. Tư vấn trước khi Thành lập doanh nghiệp :
- Tư vấn lựa chọn loại hình doanh nghiệp (Công ty Cổ phần, Công ty TNHH 2 thành viên trở lên, Công ty TNHH 1 thành viên, công ty hợp danh, doanh nghiệp nghiệp tư nhân)
- Tư vấn về tên của doanh nghiệp;
- Tư vấn trụ sở chính của doanh nghiệp;
- Tư vấn về vốn điều lệ và vốn pháp định;
- Tư vấn về ngành nghề kinh doanh: (ngành nghề yêu cầu vốn pháp định, ngành nghề yêu cầu chứng chỉ, các điều kiện khác về ngành nghề) ;
- Tư vấn về các sáng lập và đại diện theo pháp luật của doanh nghiệp;
- Lập hồ sơ thành lập doanh nghiệp. (Giấy đề nghị đăng ký kinh doanh, điều lệ công ty, danh sách sáng lập viên và các tài liệu khác theo quy định của pháp luật);
2. Tư vấn sau khi Doanh nghiệp được thành lập:
- Tư vấn các công việc cần và phải làm của một doanh nghiệp mới;
- Tư vấn các vấn đề liên quan đến doanh nghiệp trong quá trình hoạt động
- Soạn thảo hồ sơ nội bộ của doanh nghiệp, gồm: Điều lệ doanh nghiệp; Biên bản góp vốn thành lập Công ty, bầu chủ tịch, cử người đại diện theo pháp luật; Quyết định bổ nhiệm Giám đốc; Quyết định bổ nhiệm kế toán trưởng; Chứng nhận sở hữu vốn; Sổ và thông báo lập sổ cổ đông/thành viên…
Đừng ngần ngại liên lạc với chúng tôi nếu quý khách đang có nhu cầu tư vấn thành lập doanh nghiệp hoặc các thắc mắc liên quan đến việc khởi nghiệp hay các yêu cầu cung cấp dịch vụ pháp lý khác.
Quý khách hàng có thể tham khảo bảng báo giá chi tiết cho từng nội dung công việc sau đây:
Quý khách lo lắng, thắc mắc về thủ tục xin giấy phép kinh doanh khó khăn ??? Song Nguyễn sẽ giải quyết thắc mắc và đáp ứng mọi nhu cầu về lĩnh vực này. Đến với Song Nguyễn , Quý khách sẽ thật sự an tâm và hài lòng.
Phí dịch vụ trọn gói trên bao gồm: Hồ sơ đăng ký kinh doanh, Mã số thuế, Con dấu.
Khách hàng lưu ý: Phí dịch vụ trọn gói trên bao gồm lệ phí đóng tại Cơ quan nhà nước và phí dịch vụ.
Noäi dung coâng vieäc:
Công ty chúng tôi sẽ soạn thảo toàn bộ hồ sơ đăng ký kinh doanh theo thông tin của Quý khách yêu cầu.
Thủ tục cần thiết khi đăng ký kinh doanh:
GIÁ CẢ HỢP LÝ – TÍNH CHUYÊN NGHIỆP CAO – UY TÍN – TẬN TÌNH
3. DỊCH VỤ KẾ TOÁN
Quý vị đang đau đầu với hàng ngàn chứng từ kế toán và không biết cách gỡ rối sao cho hiệu quả…! Hãy đến với đội ngũ kế toán trưởng hơn 10 năm kinh nghiệm ở SONG NGUYỄN, Chúng tôi sẽ cung cấp cho Quý vị:
· Tư vấn – thực hiện dịch vụ viết sổ sách kế toán và quyết toán thuế, lập báo cáo thuế hàng tháng bằng phần mềm chuyên nghiệp.
· Gỡ rối và giải quyết mọi hồ sơ kế toán khó và đang gặp vướng mắc, tổ chức lưu trữ chứng từ.
· Tư vấn về chính sách thuế và thiết lập hồ sơ thuế ban đầu (đăng ký thuế, kê khai thuế, miễn giảm thuế, thanh tra kiểm tra và xử lý vi phạm thuế).
· Cho thuê và đứng tên kế toán trưởng, mua hoá đơn và sổ sách kế toán, tiếp xúc và giải trình theo yêu cầu của cơ quan thuế.
· Tư vấn cho doanh nghiệp xây dựng các mô hình kế toán tối ưu, tổ chức và điều hành bộ máy kế toán hiệu quả nhất.
· Hướng dẫn lập báo cáo tài chính.
UY TÍN – CHUYÊN NGHIỆP – HỢP LÝ
4. KẾ TOÁN TRỌN GÓI – GỠ RỐI HỒ SƠ KẾ TOÁN KHÓ
· Dịch vụ báo cáo thuế hàng tháng, Quyết toán thuế.
· Gỡ rối sổ sách kế toán, giải quyết mọi hồ sơ khó (kể cả hồ sơ đã kê khai)
· Tư vấn chính sách thuế, kê khai thuế, đăng ký thuế, miễn giảm thuế, thay mặt giải thích với thanh tra kiểm tra, xử lý vi phạm thuế
5. THẨM ĐỊNH GIÁ - HỖ TRỢ VAY VỐN NGÂN HÀNG
· Thẩm định giá bất động sản: Nhà cửa, cao ốc, đất đai, công trình xây dựng,…
· Thẩm định giá trị doanh nghiệp, thẩm định máy móc thiết bị, dây chuyền sản xuất, các loại xe ôtô, xe tải, tàu, thuyền,…
6. DỊCH VỤ MÔI GIỚI – KINH DOANH BẤT ĐỘNG SẢN – BẢO VỆ ( VỆ SĨ )
Bạn cần thành lập công ty có ngành nghề kinh doanh bất động sản - dịch vụ bảo vệ, Hãy liên hệ ngay với chúng tôi : 08.22377036 or 0909.47.63.64 – 0909.47.63.67 để được tư vấn và hỗ trợ thành lập
Hồ sơ pháp lý thành lập Công ty bất động sản:
- Bản đề nghị cấp Giấy chứng nhận đăng ký kinh doanh;
- Dự thảo điều lệ Công ty cổ phần hoặc Công ty ;
- Danh sách Cổ đông sáng lập Công ty cổ phần hoặc Danh sách thành viên Công ty TNHH có hai thành viên trở lên;
- Bản sao tài liệu chứng minh tư cách pháp lý của Cổ đông sang lập Công ty cổ phần hoặc thành viên sáng lập Công ty TNHH;
- Bản sao chứng chỉ hành nghề đối với ngành nghề Môi giới bất động sản, Định giá bất động sản và Sàn giao dịch bất động sản;
- Xác nhận tài khoản phong tỏa của một Ngân hàng thương mại tại Việt Nam hoặc chi nhánh Ngân hàng nước ngoài tại Việt Nam đối với khoản vốn Pháp định Quy định cho lĩnh vực kinh doanh bất động sản;
- Biên bản họp Hội đồng thành viên Công ty TNHH, hoặc Biên bản họp Hội đồng cổ đông về việc cử người ký quỹ vốn pháp định vào Ngân hàng.
Giá :
Thành lập công ty Bất động sản : 15.000.000
Thành lập công ty dịch vụ bảo vệ : 18.000.000
+ Làm Kiểm toán bổ sung ngành k/doanh bất động sản: 8 triệu
+ Làm Kiểm toán bổ sung ngành kinh doanh bất động sản và ra GPKD ngành kinh doanh bất động sản tai Sở kế hoạch đầu tư TP.HCM: 9 triệu
· Môi giới, tư vấn hoạt động mua bán, thuê và cho thuê nhà ở, căn hộ, chung cư, cao ốc văn phòng và chuyển nhượng quyền sử dụng đất.
· Tư vấn pháp lý liên quan đến thủ tục nhà đất và kinh doanh bất động sản, giấy phép dịch vụ vệ sĩ, bảo vệ…
THỦ TỤC NHANH CHÓNG – RÕ RÀNG – CHI PHÍ HỢP LÝ
* Đặt biệt lấy giấy phép kinh doanh nhanh theo nhu cầu
kinh doanh (1- 3 ngày)
Quy trình làm việc :
* Bước 1: Quý khách cung cấp thông tin và hồ sơ cần thiết, Công ty Chúng tôi sẽ
ký hợp đồng theo nội dung công việc do Quý khách yêu cầu.
* Bước 2 : Công Ty Chúng tôi nộp hồ sơ tại cơ quan Sở Kế Hoạch đầu Tư TP.HCM.
* Bước 3 : Công Ty chúng tôi nộp hồ sơ xong, sở kế hoạch đầu tư sẽ đưa một phiếu biên nhận hồ sơ hẹn ngày cấp GPKD.
Đến ngày hẹn ( 5 ngày ) trên biên nhận khách hàng sẽ mang theo CMND và cùng bên Công Ty chúng tôi lên sở kế hoạch làm thủ tục lấy GPKD.
Hai ngày sau khi nhận được giấy phép kinh doanh cơ quan công an TP.HCM sẽ cấp con dấu tư cách pháp nhân cho công ty.
Hình thức thanh toán:
Sau khi giao hồ sơ khách hàng ký, ký kết hợp đồng dịch vụ 2 bên, Quý khách hàng sẽ đặt cọc 50% giá trị hợp đồng, 50% còn lại Quý khách sẽ thanh toán tại Cơ quan nhà nước sau khi nhận được giấy phép đăng ký kinh doanh và con dấu tư cách pháp nhân của công ty.
*Đăc Biệt: Đến tận nơi tư vấn, nhận hồ sơ.
-----------“ ĐẢM BẢO NHANH NHẤT - đúng ngày! “----------
CAM KẾT: SAI - CHẬM NGÀY KHÔNG TÍNH PHÍ DỊCH VỤ…
Hãy liên hệ với chúng tôi để biết thêm chi tiết và được tư vấn miễn phí thànhlập
doanh nghiệp.
Chân thành cảm ơn sự Quan tâm của Quý khách đối với Công ty Chúng tôi ! Trân trọng Kính Chào!
www.dichvugiayphepkinhdoanh.com.vn

markdown:
# Sở Kế hoạch Đầu tư Thành phố Hồ Chí Minh - Các bước thực hiện đăng ký doanh nghiệp
**Tình trạng:**Cũ **Giá:**Thỏa thuận ![ ](/images/raovat/phone.gif)
Cập nhật lúc:
**07h01** ngày **09/11/2013**
Đăng lúc:
**21h35** ngày **15/08/2013** - TP.Hồ Chí Minh
Đã xem
**744** Mã tin **101340155**
songnguyentrung@gmail.com |
[Gửi tin nhắn](javascript:void(0)) **Thông tin chung** [Ẩn](javascript:void(0)) [CÔNG TY](mailto:http://dichvugiayphepkinhdoanh.com.vn/) [TƯ VẤN THÀNH LẬP DOANH NGHIỆP SONG NGUYỄN](http://dichvugiayphepkinhdoanh.com.vn/) **Địa chỉ **: **224/7/15 Ung Văn Khiêm Phường 25, Quận Bình Thạnh ** **105 Phạm Hùng, Ấp 1, Xã Phước Lộc, Huyện Nhà Bè** **Tell:** ** 08 – 22 377 036 - 0909 47 63 64 – 0909 47 63 67 ** **Email:** [ - Songnguyentrung@gmail.com](mailto:Songnguyentrung@gmail.com) [giayphepkinhdoanh](mailto:http://dichvugiayphepkinhdoanh.com.vn/)6364@gmail.com **Website:** [Dichvugiayphepkinhdoanh.com.vn](http://dichvugiayphepkinhdoanh.com.vn/) [Công Ty Tư Vấn Song Nguyễn](http://dichvugiayphepkinhdoanh.com.vn/) kính gửi lời chúc sức khỏe và thành đạt đến Quý khách. Cảm ơn sự tin tưởng ủng hộ và quan tâm của Quý khách đối với Công Ty Chúng tôi trong thời gian qua ! *Chuyeân Ngaønh* [TƯ VẤN THÀNH LẬP DOANH NGHIỆP](http://dichvugiayphepkinhdoanh.com.vn/) [DỊCH VỤ KẾ TOÁN](http://dichvugiayphepkinhdoanh.com.vn/bao-cao-thue-hang-thang.html) [ĐĂNG KÝ THƯƠNG HIỆU – LOGO](http://dichvugiayphepkinhdoanh.com.vn/quy-dinh-dang-ky-logo-thuong-hieu-nhan-hieu-doc-quyen.html)
THẨM ĐỊNH GIÁ VÀ HỖ TRỢ VAY VỐN NGÂN HÀNG
[DỊCH VỤ GIẤY PHÉP KINH DOANH MÔI GIỚI – KINH DOANH BẤT ĐỘNG SẢN – BẢO VỆ ( VỆ SĨ )](http://dichvugiayphepkinhdoanh.com.vn/dich-vu-khac/2011-09-26-03-15-37/kinh-doanh-bat-dong-san.html) **Tư vấn: **
Ø Tư vấn miễn giảm thuế trong 2 năm đầu theo Luật Thuế.
Ø Hoàn thành sổ sách kế toán có lợi nhất.
Ø Hỗ trợ vốn vay đầu tư các dự án.
Ø Được phục vụ tận tình – Hồ sơ nhanh chóng – Chi phí thấp – Hiệu quả cao.
Chúng tôi luôn hoạt động theo tiêu chí:
**“ LẤY SỰ THÀNH CÔNG CỦA KHÁCH HÀNG LÀM SỰ THÀNH CÔNG CHO CHÍNH MÌNH ”.** **THỦ TỤC NHANH CHÓNG – RÕ RÀNG – CHI PHÍ HỢP LÝ** [Tư vấn lựa chọn loại hình kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/) phù hợp với ngành nghề và quy mô: [Công ty Cổ Phần](http://dichvugiayphepkinhdoanh.com.vn/), [Công ty TNHH](http://dichvugiayphepkinhdoanh.com.vn/), [Doanh nghiệp tư nhân](http://dichvugiayphepkinhdoanh.com.vn/),…
Tư vấn thủ tục pháp lý và lập hồ sơ liên quan đến quá trình
[thành lập và quản lý doanh nghiệp,](http://dichvugiayphepkinhdoanh.com.vn/)
Tư vấn những điều kiện trước khi thành lập và sau khi thành lập đối với nghành nghề
[đăng ký kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/).
Tư vấn về
[vốn đầu tư ban đầu](http://dichvugiayphepkinhdoanh.com.vn/), [vốn pháp định](http://dichvugiayphepkinhdoanh.com.vn/), [vốn điều lệ](http://dichvugiayphepkinhdoanh.com.vn/)…
Tư vấn chi tiết cho
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/) các vấn đề về thuế, các nghĩa vụ về tài chính sau khi [đăng ký kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/) và quá trình hoạt động sản xuất [kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/)
Tư vấn về cơ cấu nhân sự, quyền hạn, nghĩa vụ của các thành viên/cổ đông trong công ty.
**1. Tư vấn trước khi Thành lập doanh nghiệp :**
-
[Tư vấn lựa chọn loại hình doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/)( [Công ty Cổ phần](http://dichvugiayphepkinhdoanh.com.vn/), [Công ty TNHH 2 thành viên trở lên, Công ty TNHH 1 thành viên, công ty hợp danh, doanh nghiệp nghiệp tư nhân](http://dichvugiayphepkinhdoanh.com.vn/))
- Tư vấn về tên của
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/);
- Tư vấn trụ sở chính của
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/);
- Tư vấn về
[vốn điều lệ và vốn pháp định](http://dichvugiayphepkinhdoanh.com.vn/);
- Tư vấn về ngành nghề kinh doanh: (ngành nghề yêu cầu vốn pháp định, ngành nghề yêu cầu chứng chỉ, các điều kiện khác về ngành nghề) ;
- Tư vấn về các sáng lập và đại diện theo pháp luật của
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/);
- Lập hồ sơ
[thành lập doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/). (Giấy đề nghị [đăng ký kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/), điều lệ công ty, danh sách sáng lập viên và các tài liệu khác theo quy định của pháp luật); **2. Tư vấn sau khi Doanh nghiệp được thành lập: **
- Tư vấn các công việc cần và phải làm của một
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/)mới;
- Tư vấn các vấn đề liên quan đến
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/)trong quá trình hoạt động
- Soạn thảo hồ sơ nội bộ của
[doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/), gồm: Điều lệ [doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/); Biên bản góp vốn [thành lập Công ty](http://dichvugiayphepkinhdoanh.com.vn/), bầu chủ tịch, cử người đại diện theo pháp luật; Quyết định bổ nhiệm Giám đốc; Quyết định bổ nhiệm kế toán trưởng; Chứng nhận sở hữu vốn; Sổ và thông báo lập sổ cổ đông/thành viên…
Đừng ngần ngại
** nếu quý khách đang có nhu cầu liên lạc với chúng tôi** [tư vấn thành lập doanh nghiệp](http://dichvugiayphepkinhdoanh.com.vn/)hoặc các thắc mắc liên quan đến việc khởi nghiệp hay các yêu cầu cung cấp dịch vụ pháp lý khác. **Quý khách hàng có thể tham khảo bảng báo giá chi tiết cho từng nội dung công việc sau đây:**
|
||
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|**Quý khách lo lắng, thắc mắc về thủ tục xin giấy phép kinh doanh khó khăn ??? Song Nguyễn sẽ giải quyết thắc mắc và đáp ứng mọi nhu cầu về lĩnh vực này. Đến với Song Nguyễn , Quý khách sẽ thật sự an tâm và hài lòng.** ** Phí dịch vụ trọn gói trên bao gồm: Hồ sơ đăng ký kinh doanh, Mã số thuế, Con dấu.** *Khách hàng lưu ý:* [Phí dịch vụ trọn gói](http://dichvugiayphepkinhdoanh.com.vn/) trên bao gồm lệ phí đóng tại Cơ quan nhà nước và phí dịch vụ. ** Noäi dung coâng vieäc: ** **Công ty chúng tôi sẽ soạn thảo toàn bộ hồ sơ đăng ký kinh doanh theo thông tin của Quý khách yêu cầu.** [Thủ tục cần thiết khi đăng ký kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/):
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|**GIÁ CẢ HỢP LÝ – TÍNH CHUYÊN NGHIỆP CAO – UY TÍN – TẬN TÌNH** **3. DỊCH VỤ KẾ TOÁN**
Quý vị đang đau đầu với hàng ngàn chứng từ kế toán và không biết cách gỡ rối sao cho hiệu quả…! Hãy đến với đội ngũ kế toán trưởng hơn 10 năm kinh nghiệm ở
**SONG NGUYỄN**, Chúng tôi sẽ cung cấp cho Quý vị:
· Tư vấn – thực hiện dịch vụ viết sổ sách kế toán và quyết toán thuế, lập báo cáo thuế hàng tháng bằng phần mềm chuyên nghiệp.
· Gỡ rối và giải quyết mọi hồ sơ kế toán khó và đang gặp vướng mắc, tổ chức lưu trữ chứng từ.
· Tư vấn về chính sách thuế và thiết lập hồ sơ thuế ban đầu (đăng ký thuế, kê khai thuế, miễn giảm thuế, thanh tra kiểm tra và xử lý vi phạm thuế).
· Cho thuê và đứng tên kế toán trưởng, mua hoá đơn và sổ sách kế toán, tiếp xúc và giải trình theo yêu cầu của cơ quan thuế.
· Tư vấn cho doanh nghiệp xây dựng các mô hình kế toán tối ưu, tổ chức và điều hành bộ máy kế toán hiệu quả nhất.
· Hướng dẫn lập báo cáo tài chính.
**UY TÍN – CHUYÊN NGHIỆP – HỢP LÝ**
** 4. KẾ TOÁN TRỌN GÓI – GỠ RỐI HỒ SƠ KẾ TOÁN KHÓ** **· Dịch vụ báo cáo thuế hàng tháng, Quyết toán thuế.**
· Gỡ rối sổ sách kế toán, giải quyết mọi hồ sơ khó (kể cả hồ sơ đã kê khai)
· Tư vấn chính sách thuế, kê khai thuế, đăng ký thuế, miễn giảm thuế, thay mặt giải thích với thanh tra kiểm tra, xử lý vi phạm thuế
**5. THẨM ĐỊNH GIÁ - HỖ TRỢ VAY VỐN NGÂN HÀNG**
· Thẩm định giá bất động sản: Nhà cửa, cao ốc, đất đai, công trình xây dựng,…
· Thẩm định giá trị doanh nghiệp, thẩm định máy móc thiết bị, dây chuyền sản xuất, các loại xe ôtô, xe tải, tàu, thuyền,…
**6. DỊCH VỤ MÔI GIỚI – KINH DOANH BẤT ĐỘNG SẢN – BẢO VỆ ( VỆ SĨ )** **Bạn cần ** [thành lập công ty](http://dichvugiayphepkinhdoanh.com.vn/)có ngành nghề kinh doanh bất động sản - dịch vụ bảo vệ, Hãy liên hệ ngay với chúng tôi : 08.22377036 or 0909.47.63.64 – 0909.47.63.67 để được tư vấn và hỗ trợ thành lập
Hồ sơ pháp lý
[thành lập Công ty](http://dichvugiayphepkinhdoanh.com.vn/) bất động sản:
- Bản đề nghị cấp
[Giấy chứng nhận đăng ký kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/);
- Dự thảo điều lệ Công ty cổ phần hoặc Công ty ;
- Danh sách Cổ đông sáng lập Công ty cổ phần hoặc Danh sách thành viên Công ty TNHH có hai thành viên trở lên;
- Bản sao tài liệu chứng minh tư cách pháp lý của Cổ đông sang lập Công ty cổ phần hoặc thành viên sáng lập Công ty TNHH;
- Bản sao chứng chỉ hành nghề đối với ngành nghề Môi giới bất động sản, Định giá bất động sản và Sàn giao dịch bất động sản;
- Xác nhận tài khoản phong tỏa của một Ngân hàng thương mại tại Việt Nam hoặc chi nhánh Ngân hàng nước ngoài tại Việt Nam đối với khoản vốn Pháp định Quy định cho lĩnh vực kinh doanh bất động sản;
- Biên bản họp Hội đồng thành viên Công ty TNHH, hoặc Biên bản họp Hội đồng cổ đông về việc cử người ký quỹ vốn pháp định vào Ngân hàng.
**Giá :** [Thành lập công ty Bất động sản ](http://dichvugiayphepkinhdoanh.com.vn/dich-vu-khac/2011-09-26-03-15-37/kinh-doanh-bat-dong-san.html) : 15.000.000 [Thành lập công ty](http://dichvugiayphepkinhdoanh.com.vn/) dịch vụ bảo vệ : 18.000.000
+ Làm Kiểm toán bổ sung ngành k/doanh bất động sản: 8 triệu
+ Làm Kiểm toán bổ sung ngành
[kinh doanh](http://dichvugiayphepkinhdoanh.com.vn/) bất động sản và ra GPKD ngành kinh doanh bất động sản tai Sở kế hoạch đầu tư TP.HCM: 9 triệu
· Môi giới, tư vấn hoạt động mua bán, thuê và cho thuê nhà ở, căn hộ, chung cư, cao ốc văn phòng và chuyển nhượng quyền sử dụng đất.
· Tư vấn pháp lý liên quan đến thủ tục nhà đất và
[kinh doanh bất động sản](http://dichvugiayphepkinhdoanh.com.vn/), giấy phép dịch vụ vệ sĩ, bảo vệ…
**THỦ TỤC NHANH CHÓNG – RÕ RÀNG – CHI PHÍ HỢP LÝ** *** Đặt biệt lấy giấy phép kinh doanh nhanh theo nhu cầu ** **kinh doanh (1- 3 ngày)** **Quy trình làm việc :** *** Bước 1: Quý khách cung cấp thông tin và hồ sơ cần thiết, Công ty Chúng tôi sẽ ** ** ký hợp đồng theo nội dung công việc do Quý khách yêu cầu. **
*
**Bước 2 :** **Công Ty Chúng tôi nộp hồ sơ tại cơ quan Sở Kế Hoạch đầu Tư TP.HCM.**
*
**Bước 3 :** **Công Ty chúng tôi nộp hồ sơ xong, sở kế hoạch đầu tư sẽ đưa một phiếu biên nhận hồ sơ hẹn ngày cấp GPKD.** ** Đến ngày hẹn ( 5 ngày ) trên biên nhận khách hàng sẽ mang theo CMND và cùng bên Công Ty chúng tôi lên sở kế hoạch làm thủ tục lấy GPKD. **
**Hai ngày sau khi nhận được giấy phép kinh doanh cơ quan công an TP.HCM sẽ cấp con dấu tư cách pháp nhân cho công ty.**
**Hình thức thanh toán: ** **Sau khi giao hồ sơ khách hàng ký, ký kết hợp đồng dịch vụ 2 bên, Quý khách hàng sẽ đặt cọc 50% giá trị hợp đồng, 50% còn lại Quý khách sẽ thanh toán tại Cơ quan nhà nước sau khi nhận được giấy phép đăng ký kinh doanh và con dấu tư cách pháp nhân của công ty.**
*Đăc Biệt: Đến tận nơi tư vấn, nhận hồ sơ.
[-----------“ ĐẢM BẢO NHANH NHẤT - đúng ngày! “----------](http://dichvugiayphepkinhdoanh.com.vn/)
CAM KẾT: SAI - CHẬM NGÀY KHÔNG TÍNH PHÍ DỊCH VỤ…
*Hãy liên hệ với chúng tôi để biết thêm chi tiết và được tư vấn miễn phí thànhlập*
doanh nghiệp.
*Chân thành cảm ơn sự Quan tâm của Quý khách đối với Công ty Chúng tôi ! Trân trọng Kính Chào!* [www.dichvugiayphepkinhdoanh.com.vn](http://dichvugiayphepkinhdoanh.com.vn/)
[Thành lập doanh nghiệp](http://raovat.chonmua.com/TP-HCM/thanh-lap-doanh-nghiep-dm296.html)" ![ ](/images/raovat/back.gif)
[TP.Hồ Chí Minh](http://raovat.chonmua.com/TP-HCM/dich-vu-giai-tri-dm268.html)› [Dịch vụ, giải trí](http://raovat.chonmua.com/TP-HCM/dich-vu-giai-tri-dm268.html)› [Dịch vụ về luật](http://raovat.chonmua.com/TP-HCM/dich-vu-ve-luat-dm293.html)› [Thành lập doanh nghiệp](http://raovat.chonmua.com/TP-HCM/thanh-lap-doanh-nghiep-dm296.html) **Các tin rao vặt cùng danh mục Thành lập doanh nghiệp** ![ Công Ty Kinh Nam chuyên thực hiện các dịch vụ về giấy phép kinh doanh, dịch vụ kế toán,...](/images/raovat/no_image.png)
![ Dịch vụ tư vấn thành lập doanh nghiệp miễn phí](/images/raovat/no_image.png)
![ Dịch vụ tư vấn thành lập doanh nghiệp miễn phí tại TPHCM](/images/raovat/no_image.png)
![ Chuyên Nhận làm sổ sách kế toán](/images/raovat/no_image.png)
![ Tư vấn thành lập doanh nghiệp](/images/raovat/no_image.png)
![ Dịch vụ tư vấn thành lập doanh nghiệp](/images/raovat/no_image.png)
![ Thành lập Doanh nghiệp TPM tư vấn miễn phí](/images/raovat/no_image.png)
![ Dịch vụ dọn dẹp sổ sách kế toán tại Đà Nẵng](/images/raovat/no_image.png)
![ dịch vụ thành lập công ty trọn gói giá rẻ tại tphcm](http://raovat.chonmua.com/img-lib/22-20/raovat/d/p/z/dpz1459572128_Logo Luathoanggia 07.2013.jpg)
![ dịch vụ thành lập công ty trọn gói giá rẻ tại tphcm](http://raovat.chonmua.com/img-lib/200-200/raovat/d/p/z/dpz1459572128_Logo Luathoanggia 07.2013.jpg)
![ Cung cấp hóa chất, vi sinh cho hệ thống nước thải](/images/raovat/no_image.png)
![ Đồng hành cùng bạn đọc tiếp cận công lý, tư vấn luật miễn phí](/images/raovat/no_image.png)
![ Dịch vụ kế toán và những điều cần biết về hành nghề dịch vụ kế toán là gì?](http://raovat.chonmua.com/img-lib/22-20/raovat/8/a/m/8am1444700944_dich-vu-ke-toan.jpg)
![ Dịch vụ kế toán và những điều cần biết về hành nghề dịch vụ kế toán là gì?](http://raovat.chonmua.com/img-lib/200-200/raovat/8/a/m/8am1444700944_dich-vu-ke-toan.jpg)
![ Ký và lập chứng từ kế toán, những vấn đề nào kế toán cần biết?](/images/raovat/no_image.png)
![ Dịch vụ Thành lập Doanh Nghiệp nhanh chóng](http://raovat.chonmua.com/img-lib/22-20/raovat/r/7/9/r791420432122_banner-2- TLDN.gif)
![ Dịch vụ Thành lập Doanh Nghiệp nhanh chóng](http://raovat.chonmua.com/img-lib/200-200/raovat/r/7/9/r791420432122_banner-2- TLDN.gif)
![ Dịch vụ giải thể các loại hình Doanh nghiệp](http://raovat.chonmua.com/img-lib/22-20/raovat/h/e/h/heh1424855973_gia the cty.jpg)
![ Dịch vụ giải thể các loại hình Doanh nghiệp](http://raovat.chonmua.com/img-lib/200-200/raovat/h/e/h/heh1424855973_gia the cty.jpg)
![ vi sinh xử lý mùi hôi chế biến thủy sản - 0911423042](/images/raovat/no_image.png)
![ Lập Hồ sơ môi trường cho doanh nghiệp - 0911423042](http://raovat.chonmua.com/img-lib/22-20/raovat/c/r/l/crl1445048374_12096575_115475278808550_5751317960667120273_n.jpg)
![ Lập Hồ sơ môi trường cho doanh nghiệp - 0911423042](http://raovat.chonmua.com/img-lib/200-200/raovat/c/r/l/crl1445048374_12096575_115475278808550_5751317960667120273_n.jpg)
![ Tư vấn hồ sơ môi trường cho doanh nghiệp TẠI TPHCM - 0911423042](http://raovat.chonmua.com/img-lib/22-20/raovat/6/e/x/6ex1445048280_12096575_115475278808550_5751317960667120273_n.jpg)
![ Tư vấn hồ sơ môi trường cho doanh nghiệp TẠI TPHCM - 0911423042](http://raovat.chonmua.com/img-lib/200-200/raovat/6/e/x/6ex1445048280_12096575_115475278808550_5751317960667120273_n.jpg)
![ Chứng nhận Iso 9001:2008 - Hệ thống quản lý chất lượng](/images/raovat/no_image.png)
![ Dịch vụ mua bán & sáp nhập công ty tại Đà Nẵng](/images/raovat/no_image.png)

Vary: Accept-Encoding

X-Cache-Status: MISS

Content-Type: text/html; charset=utf-8


text:
Hoạt động gần đây
Luồng hoạt động của tất cả thành viên tại Diễn đàn rao vặt chung trên toàn quốc.
-
namnguyenle đã đăng chủ đề mới.
Thực phẩm chống lõa hóa da, đẹp tóc và tốt cho sức khỏe
Theo một nghiên cứu khoa học về da cho biết, thay vì bạn sử dụng thật nhiều mỹ phẩm chăm dưỡng hoặc dùng những loại thuốc bổ đẹp nhằm...
Diễn đàn: Rao vặt khác19/2/17 lúc 1:04 AM
-
binhphatnguyen đã trả lời vào chủ đề xưỡng may balo , túi xách , nhận sx với sl lớn alo 0917.446.448.
upppppppppppppppppppp19/2/17 lúc 12:53 AM
-
Crystal đã đăng chủ đề mới.
Tại sao giá điện năm 2017 có sự điều chỉnh tăng?
Giá điện năm 2017 có sự điều chỉnh như thế nào Năm 2016 vừa qua, thực hiện chỉ đạo về bảo đảm ổn định kinh tế vĩ mô, ngành điện đã...
Diễn đàn: Điện gia dụng19/2/17 lúc 12:29 AM
-
thuctapseonx02 đã đăng chủ đề mới.
Đồ công nghệ có là 'kẻ phá bĩnh' chuyến du lịch của bạn?
sửa máy tính tận nơi quận 9 sửa máy tính tận nơi quận 10 Có ý kiến cho rằng không nên mang laptop khi đi du lịch, bởi rất có...
Diễn đàn: Máy tính19/2/17 lúc 12:22 AM
-
thuctapseonx02 đã đăng chủ đề mới.
Máy PC – Laptop – Macbook - Hệ thống mạng - Máy in
sửa máy tính tận nơi quận 10 sửa máy tính tận nơi quận 12 Cài Đặt – Sửa Chữa – Vệ Sinh - Nâng Cấp Để sử dụng các sản phẩm...
Diễn đàn: Máy tính19/2/17 lúc 12:18 AM
-
thuctapseonx02 đã đăng chủ đề mới.
Sinh viên nên chọn những laptop như thế nào
sửa máy tính tại nhà quận 5 sửa máy tính tại nhà quận 6 Mùa lễ hội cuối năm đang đến gần và bạn đang có ý định sắm cho mình một...
Diễn đàn: Máy tính19/2/17 lúc 12:15 AM
-
thuctapseonx02 đã đăng chủ đề mới.
Thị trường máy tính có những bước chuyển mới như thế nào
sửa máy tính tại nhà quận 5 sửa máy tính tại nhà quận 6 Với hai sự kiện được tổ chức cách nhau một ngày, Apple và Microsoft đã...
Diễn đàn: Máy tính19/2/17 lúc 12:09 AM
-
thuctapseonx02 đã đăng chủ đề mới.
Áo cưới ngắn thu hút và hấp dẫn như thế nào
chụp ảnh cưới chup anh cuoi Gần đây thời tiết tại Việt Nam khá bất thường, có hôm mưa cả ngày không ngớt, bữa thì lại nắng oi bức...
Diễn đàn: Dịch vụ gia đình19/2/17 lúc 12:07 AM
-
thuctapseonx02 đã đăng chủ đề mới.
5 xu hướng make up được 'ưu ái' trong mùa cưới 2017
chụp ảnh cưới chup anh cuoi 2017 đánh dấu sự trở lại của gò má ửng hồng, lớp nền căng bóng... Bầu mắt 'bóng nhãy' Thay vì đôi môi...
Diễn đàn: Dịch vụ gia đình19/2/17 lúc 12:03 AM
-
thuctapseonx02 đã đăng chủ đề mới.
xu hướng áo cưới sẽ được ưa chuộng 2017
chup anh cuoi ảnh cưới Đối với những cặp đôi đang lên kế hoạch cho buổi chụp ảnh cưới và hôn lễ vào năm 2017 thì việc nắm bắt được...
Diễn đàn: Dịch vụ gia đình19/2/17 lúc 12:01 AM
-
thangphuxuan đã đăng chủ đề mới.
Những mẫu do trang suc cực hot cho cô nàng mùa thu
Những giáo đồ thời trang có thường theo dõi thông tin mới nhất từ lĩnh vực luôn thay đổi từng ngày này chưa nhỉ? [IMG] Gần đây, tại...
Diễn đàn: Rao vặt khác18/2/17 lúc 6:09 PM
-
mrtrong181 đã đăng chủ đề mới.
Cách chọn mua đèn chùm cho phòng ngủ ra sao
Đèn chùm cho phòng ngủ loại nào tốt và thích hợp nhất cho căn nhà của nhiều bạn hiện tại thì bạn hãy cùng khám phá và hiểu rõ thêm trong...
Diễn đàn: Nội ngoại thất18/2/17 lúc 6:02 PM
-
creative đã đăng chủ đề mới.
Căn hộ Marina Bay Thủ Thiêm nâng tầm giá trị cuộc sống
can ho marina bay thu thiem toạ lạc tại khu 3 và 4 của KDT mới Thủ Thiêm , phường An Lợi Đông , Q.2 , Thành phố Hồ Chí Minh , dự án kết...
Diễn đàn: Rao vặt khác18/2/17 lúc 5:17 PM
-
traungo đã đăng chủ đề mới.
The Avila 2 An Dương Vương một không gian xanh
The Avila 2 An Dương Vương một không gian xanh Chung Cu The Avila 2 Quan 8 có nhiều tổng diện tích đất để dành làm tiện ích phục vụ cư...
Diễn đàn: Bất động sản18/2/17 lúc 4:49 PM
-
tien_cntt đã đăng chủ đề mới.
Phát hiện và sửa lỗi cơ bản của máy photocopy đơn giản nhất
Cùng Máy Văn Phòng HD Hà Nội tìm hiểu lỗi cơ bản của máy photocopy và cách khắc phục đơn giản và nhanh chóng tìm ra lỗi khắc phục. Xem...
Diễn đàn: Rao vặt khác18/2/17 lúc 4:15 PM

markdown:
# Hoạt động gần đây
Luồng hoạt động của tất cả thành viên tại Diễn đàn rao vặt chung trên toàn quốc.
-
[namnguyenle](members/namnguyenle.3060/)đã đăng chủ đề mới. [Thực phẩm chống lõa hóa da, đẹp tóc và tốt cho sức khỏe](threads/thuc-pham-chong-loa-hoa-da-dep-toc-va-tot-cho-suc-khoe.168117/)
Theo một nghiên cứu khoa học về da cho biết, thay vì bạn sử dụng thật nhiều mỹ phẩm chăm dưỡng hoặc dùng những loại thuốc bổ đẹp nhằm...
#### Diễn đàn:19/2/17 lúc 1:04 AM
[Rao vặt khác](forums/rao-vat-khac/)
-
[binhphatnguyen](members/binhphatnguyen.10021/)đã trả lời vào chủ đề [xưỡng may balo , túi xách , nhận sx với sl lớn alo 0917.446.448](posts/201102/).
upppppppppppppppppppp19/2/17 lúc 12:53 AM
-
[Crystal](members/crystal.8800/)đã đăng chủ đề mới. [Tại sao giá điện năm 2017 có sự điều chỉnh tăng?](threads/tai-sao-gia-dien-nam-2017-co-su-dieu-chinh-tang.168116/)
Giá điện năm 2017 có sự điều chỉnh như thế nào Năm 2016 vừa qua, thực hiện chỉ đạo về bảo đảm ổn định kinh tế vĩ mô, ngành điện đã...
#### Diễn đàn:19/2/17 lúc 12:29 AM
[Điện gia dụng](forums/dien-gia-dung/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [Đồ công nghệ có là 'kẻ phá bĩnh' chuyến du lịch của bạn?](threads/do-cong-nghe-co-la-ke-pha-binh-chuyen-du-lich-cua-ban.168115/)
sửa máy tính tận nơi quận 9 sửa máy tính tận nơi quận 10 Có ý kiến cho rằng không nên mang laptop khi đi du lịch, bởi rất có...
#### Diễn đàn:19/2/17 lúc 12:22 AM
[Máy tính](forums/may-tinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [Máy PC – Laptop – Macbook - Hệ thống mạng - Máy in](threads/may-pc-laptop-macbook-he-thong-mang-may-in.168114/)
sửa máy tính tận nơi quận 10 sửa máy tính tận nơi quận 12 Cài Đặt – Sửa Chữa – Vệ Sinh - Nâng Cấp Để sử dụng các sản phẩm...
#### Diễn đàn:19/2/17 lúc 12:18 AM
[Máy tính](forums/may-tinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [Sinh viên nên chọn những laptop như thế nào](threads/sinh-vien-nen-chon-nhung-laptop-nhu-the-nao.168113/)
sửa máy tính tại nhà quận 5 sửa máy tính tại nhà quận 6 Mùa lễ hội cuối năm đang đến gần và bạn đang có ý định sắm cho mình một...
#### Diễn đàn:19/2/17 lúc 12:15 AM
[Máy tính](forums/may-tinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [Thị trường máy tính có những bước chuyển mới như thế nào](threads/thi-truong-may-tinh-co-nhung-buoc-chuyen-moi-nhu-the-nao.168112/)
sửa máy tính tại nhà quận 5 sửa máy tính tại nhà quận 6 Với hai sự kiện được tổ chức cách nhau một ngày, Apple và Microsoft đã...
#### Diễn đàn:19/2/17 lúc 12:09 AM
[Máy tính](forums/may-tinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [Áo cưới ngắn thu hút và hấp dẫn như thế nào](threads/ao-cuoi-ngan-thu-hut-va-hap-dan-nhu-the-nao.168111/)
chụp ảnh cưới chup anh cuoi Gần đây thời tiết tại Việt Nam khá bất thường, có hôm mưa cả ngày không ngớt, bữa thì lại nắng oi bức...
#### Diễn đàn:19/2/17 lúc 12:07 AM
[Dịch vụ gia đình](forums/dich-vu-gia-dinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [5 xu hướng make up được 'ưu ái' trong mùa cưới 2017](threads/5-xu-huong-make-up-duoc-uu-ai-trong-mua-cuoi-2017.168110/)
chụp ảnh cưới chup anh cuoi 2017 đánh dấu sự trở lại của gò má ửng hồng, lớp nền căng bóng... Bầu mắt 'bóng nhãy' Thay vì đôi môi...
#### Diễn đàn:19/2/17 lúc 12:03 AM
[Dịch vụ gia đình](forums/dich-vu-gia-dinh/)
-
[thuctapseonx02](members/thuctapseonx02.6296/)đã đăng chủ đề mới. [xu hướng áo cưới sẽ được ưa chuộng 2017](threads/xu-huong-ao-cuoi-se-duoc-ua-chuong-2017.168109/)
chup anh cuoi ảnh cưới Đối với những cặp đôi đang lên kế hoạch cho buổi chụp ảnh cưới và hôn lễ vào năm 2017 thì việc nắm bắt được...
#### Diễn đàn:19/2/17 lúc 12:01 AM
[Dịch vụ gia đình](forums/dich-vu-gia-dinh/)
-
[thangphuxuan](members/thangphuxuan.13341/)đã đăng chủ đề mới. [Những mẫu do trang suc cực hot cho cô nàng mùa thu](threads/nhung-mau-do-trang-suc-cuc-hot-cho-co-nang-mua-thu.168108/)
Những giáo đồ thời trang có thường theo dõi thông tin mới nhất từ lĩnh vực luôn thay đổi từng ngày này chưa nhỉ? [IMG] Gần đây, tại...
#### Diễn đàn:18/2/17 lúc 6:09 PM
[Rao vặt khác](forums/rao-vat-khac/)
-
[mrtrong181](members/mrtrong181.4054/)đã đăng chủ đề mới. [Cách chọn mua đèn chùm cho phòng ngủ ra sao](threads/cach-chon-mua-den-chum-cho-phong-ngu-ra-sao.168107/)
Đèn chùm cho phòng ngủ loại nào tốt và thích hợp nhất cho căn nhà của nhiều bạn hiện tại thì bạn hãy cùng khám phá và hiểu rõ thêm trong...
#### Diễn đàn:18/2/17 lúc 6:02 PM
[Nội ngoại thất](forums/noi-ngoai-that/)
-
[creative](members/creative.7632/)đã đăng chủ đề mới. [Căn hộ Marina Bay Thủ Thiêm nâng tầm giá trị cuộc sống](threads/can-ho-marina-bay-thu-thiem-nang-tam-gia-tri-cuoc-song.168106/)
can ho marina bay thu thiem toạ lạc tại khu 3 và 4 của KDT mới Thủ Thiêm , phường An Lợi Đông , Q.2 , Thành phố Hồ Chí Minh , dự án kết...
#### Diễn đàn:18/2/17 lúc 5:17 PM
[Rao vặt khác](forums/rao-vat-khac/)
-
[traungo](members/traungo.4592/)đã đăng chủ đề mới. [The Avila 2 An Dương Vương một không gian xanh](threads/the-avila-2-an-duong-vuong-mot-khong-gian-xanh.168105/)
The Avila 2 An Dương Vương một không gian xanh Chung Cu The Avila 2 Quan 8 có nhiều tổng diện tích đất để dành làm tiện ích phục vụ cư...
#### Diễn đàn:18/2/17 lúc 4:49 PM
[Bất động sản](forums/bat-dong-san/)
-
[tien_cntt](members/tien-cntt.7801/)đã đăng chủ đề mới. [Phát hiện và sửa lỗi cơ bản của máy photocopy đơn giản nhất](threads/phat-hien-va-sua-loi-co-ban-cua-may-photocopy-don-gian-nhat.168104/)
Cùng Máy Văn Phòng HD Hà Nội tìm hiểu lỗi cơ bản của máy photocopy và cách khắc phục đơn giản và nhanh chóng tìm ra lỗi khắc phục. Xem...
#### Diễn đàn:18/2/17 lúc 4:15 PM
[Rao vặt khác](forums/rao-vat-khac/)

Cache-control: private, max-age=0

Server: LiteSpeed

X-Frame-Options: SAMEORIGIN

Content-Type: text/html; charset=UTF-8

Accept-Ranges: bytes


text:
- Đăng tin ưu tiên
-
Các dịch vụ ưu tiên trên Rồng Bay
-
Ưu đãi cho khách hàng thường xuyên
Sử dụng tài khoản chuyên nghiệp
-
Ðăng tin thu hút khách hàng
Cách viết tiêu đề thân thiện, lôi cuốn khách hàng
-
Rồng bay ra mắt ứng dụng mới cho Người đăng tinTừ App store Từ Google play
-
- Hỏi & đáp
- Hỗ trợ
- Mua quảng cáo
- Đăng ký
- Đăng nhập

markdown:
- Đăng tin ưu tiên
-
__Các dịch vụ ưu tiên trên Rồng Bay__
-
__Ưu đãi cho khách hàng thường xuyên__ [Sử dụng tài khoản chuyên nghiệp](http://rongbay.com/su-dung-tai-khoan-chuyen-nghiep.html)
-
__Ðăng tin thu hút khách hàng__ [Cách viết tiêu đề thân thiện, lôi cuốn khách hàng](http://rongbay.com/Cach-viet-tieu-de-than-thien-loi-cuon-khach-hang-fp39.html)
-
Rồng bay ra mắt ứng dụng mới cho Người đăng tin
[Từ App store](https://itunes.apple.com/us/app/rong-bay-cong-cu-quan-ly-tin/id1099691034?ls=1&mt=8) [Từ Google play](https://play.google.com/store/apps/details?id=vn.vccorp.rongbay)
-
[Hỏi & đáp](http://rongbay.com/faqs.html)
- Hỗ trợ
- Nếu bạn cần hỗ trợ, vui lòng liên hệ
-
Điện thoại : **(04) 73095555**(ext: 497 / 496 / 495) Hotline : **0936 194 226**(Dành cho cá nhân) **0926 863 922**(Dành cho doanh nghiệp) : [lienhe@rongbay.com](mailto:lienhe@rongbay.com) Skype : [cskh.rongbay](skype:cskh.rongbay?chat)
-
[Mua quảng cáo](http://rongbay.com/mua-quang-cao.html) [Đăng ký](javascript:void(0);) [Đăng nhập](javascript:void(0);)

Server: nginx

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache


Set-Cookie: cityOtherRBName=Thua-Thien-Hue; expires=Tue, 20-Feb-2018 03:02:26 GMT; Max-Age=31536000; path=/; domain=.rongbay.com

Cache-Control: private, max-age=0, pre-check=0


text:
Diễn đàn rao vặt nhà đất miễn phí
Diễn đàn (Forum) - đăng tin, rao vặt, miễn phí
Index
Calendar
Trợ giúp
Tìm kiếm
Tìm kiếm
Display results as :
Số bài
Chủ đề
Advanced Search
Thành viên
Nhóm
Đăng ký
Đăng Nhập
Tìm kiếm
Inside
G
o
o
g
l
e
Display results as :
Posts
Topics
Advanced Search
Similar topics
»
Tổn thất chung - General Average
»
[GRI House] - Ngôi Nhà Chung của couple siu nhắng ! !
»
Hệ thống báo động trực ca hàng hải (Bridge Navigation Watch Alarm System - BNWAS)
»
VỀ LẠI MÁI NHÀ XƯA - 20 - 11 - 2010
»
Vấn đề thi sỹ quan vận hành?
»
Tình yêu với các thủy thủ
»
Lần đầu tiên xuống tàu thì phải làm gì nhỉ? Phải chú ý những gì?
»
Trung tâm làm sổ thuyền viên,hộ chiếu thuyền & chứng chỉ trực ca cho thuyền viên
»
Hỏi về các phương tiện thủy nội địa
»
Thảo luận chung về tàu Container
Latest topics
»
Bản lề laptop_ linh kiện laptop_xác laptop hàng tháo máy cập nhật liên tuc nè AE!
Yesterday at 3:19 pm by
banle68
»
Cách sản xuất bao bì hộp tròn
Fri Feb 17, 2017 3:27 pm by
decant
»
Cốc nguyệt san là sản phẩm như thế nào?
Thu Feb 16, 2017 4:18 pm by
athanhads
»
Hiệu quả sau khi sử dụng que Sani Sticks
Thu Feb 16, 2017 2:37 pm by
demeverhomevnt
»
Mua phong lan Cattleya chợ lan Vạn Phúc
Wed Feb 15, 2017 10:34 am by
phonglanvanphuct
»
Tìm hiểu về cốc nguyệt san giá rẻ
Tue Feb 14, 2017 3:07 pm by
athanhads
»
Không dùng collagen nhập khẩu từ Đức có hại gì?
Mon Feb 13, 2017 3:50 pm by
pavvnt
»
Địa chỉ dán phim cách nhiệt ô tô giá rẻ
Sat Feb 11, 2017 12:02 pm by
chungquanautot
»
Tìm địa chỉ bán chậu nhựa trồng cây loại tốt
Sat Feb 11, 2017 9:13 am by
nhuavietnamvnt
Top posters
datphat191
luyen1210
hienbt1110
suaxesaigon
mrchung89
banle68
uyen.sandatviet
nhadat88
mikkey
mohip613
February 2017
Mon
Tue
Wed
Thu
Fri
Sat
Sun
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Calendar
Keywords
hanh
linh
lang
chung
30m2
phong
xanh
giang
decal
phat
tươi
thịnh
innova
dang
hoang
PRIDE
sống
Biệt
cong
dinh
lien
giao
thanh
minh
thiết
nghe
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Đất
Share
|
Chung cư B5 Cầu Diễn, chính chủ cần bán, chung cu b5 cau dien
Tác giả
Thông điệp
luyennt
Khách viếng thăm
Tiêu đề: Chung cư B5 Cầu Diễn, chính chủ cần bán, chung cu b5 cau dien
Wed Apr 13, 2011 9:22 am
Chung cư B5 Cầu Diễn, chính chủ cần bán, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien,
[SIZE="4"]
1. Chủ đầu tư:
Công ty cổ phần Đầu tư Xây dựng Nhà đất Hà Nội(HousingGroup)
2. Diện tích:
Tổng diện tích: 911.540 m2
- 1501 - 2707:
S = 117m2.
- 803:
S = 94m2.
- 1206 - 1806:
S = 91m2.
- 1203:
S = 94m2.
- 2304 - 1904:
S = 95m2.
- 809:
S = 68m2.
3. Giá :
[SIZE="5"]
- Giá bán 16.1 triệu/m2.
[/SIZE]
4. Vị trí :
Nằm trên đường Hoàng Quốc Việt kéo dài.
5. Thủ tục góp vốn :
+ Đợt 1: 30%
+Đợt 2: 30%
+Đợt 3: 20%
+Đợt 4: 20%
+ Trong đó: CT1, CT2, CT3, CT4, CT5 là nhà chung cư. TT1, TT2,TT3, TT4 xây nhà biệt thự, nhà vườn. HH1, HH2 làm công trình hỗn hợp.
[/SIZE]
***********************************
[SIZE="5"]Quý khách có nhu cầu vui lòng liên hệ:
Hồng Diệp: 0936.277.636
A.Thành: 0936.379.626
Đ/C: Sàn GD BĐS Tâm Việt(TamvietLand) .
Đc:134 Khuất Duy Tiến, Thanh Xuân, Hà Nội .
[/SIZE]
Chung cư B5 Cầu Diễn, chính chủ cần bán, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien, chung cư b5 Cầu Diễn, chung cu b5 cau dien,
Chung cư B5 Cầu Diễn, chính chủ cần bán, chung cu b5 cau dien
Trang
1
trong tổng số
1
trang
Similar topics
Similar topics
»
Phim mới của Chung Tử Đơn cực hay_Legend Of The Fist: The Return Of Chen Zhen 2010-Huyền Thoại Trần Chân
»
Bài tập phân chia tổn thất chung
»
[NOTE] Kêu gọi các VIP vote cho BIGBANG tại vòng chung kết Fan Army trên Billboard
»
Vô hình ...
»
Đi karaoke hát bài nào
Permissions in this forum:
Bạn
không có quyền
trả lời bài viết
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Đất
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Đất
Chuyển đến
:
Chọn Diễn Đàn
|
|--Siêu Thị Nhà Đất
| |--Mua Bán Nhà
| |--Mua Bán Đất
|
|--Quảng Cáo - Rao Vặt
|--Giới Thiệu Website, Blog
|--Rao Vặt
Free forum
|
©
phpBB
|
Free forum support
|
Liên hệ
|
Report an abuse
|
Sosblogs

X-XSS-Protection: 1; mode=block

Cache-Control: post-check=0, pre-check=0

X-Content-Type-Options: nosniff

Vary: User-Agent

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"