Skip to content

Commit

Permalink
Enhanced functionality of list items by making item buttons clickable.
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrystianMelo committed Jun 12, 2024
1 parent aca954c commit 8614608
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
25 changes: 24 additions & 1 deletion src/main/java/com/mycompany/bookstore/gui/BookDetails.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
import com.mycompany.bookstore.BookStore;
import com.mycompany.bookstore.Customer;
import com.mycompany.bookstore.User;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;

/**
*
Expand All @@ -39,6 +40,27 @@ public BookDetails(BookStore store, Book book) {

initComponents();

addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Point p = e.getPoint();

// Reaja com base no componente clicado
if (starLabel.getBounds().contains(p)) {
for (MouseListener l : starLabel.getMouseListeners()) {
l.mouseClicked(e);
}
} else if (cartLabel.getBounds().contains(new Point(p.x - jPanel1.getWidth(), p.y))) {
for (MouseListener l : cartLabel.getMouseListeners()) {
l.mouseClicked(e);
}
} else {
System.out.println("Book detail clicked");
}

}
});

titleLabel.setText(book.getName());
quantityLabel.setText(String.valueOf(book.getQuantity()));
supplierLabel.setText("By Amazon");
Expand Down Expand Up @@ -82,6 +104,7 @@ public void mouseClicked(MouseEvent e) {
}

@Override

public void repaint() {
if (store != null) { //BUG Fixes
User user = store.getUser();
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/com/mycompany/bookstore/gui/BookList.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
import com.mycompany.bookstore.*;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JList;
Expand All @@ -33,6 +38,37 @@ public BookList(BookStore store, ArrayList<Book> books) {
jList2.setLayout(layoyt);

jList2.setModel(listModel);

jList2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JList<BookDetails> list = (JList<BookDetails>) e.getSource();
int index = list.locationToIndex(e.getPoint());
if (index != -1) {
BookDetails item = list.getModel().getElementAt(index);
assert (item != null);

// Traduz o ponto de clique para as coordenadas do item
Rectangle cellBounds = list.getCellBounds(index, index);
Point itemPoint = new Point(e.getX() - cellBounds.x, e.getY() - cellBounds.y);
MouseEvent itemEvent = new MouseEvent(
item,
e.getID(),
e.getWhen(),
e.getModifiers(),
itemPoint.x,
itemPoint.y,
e.getClickCount(),
e.isPopupTrigger()
);

for (MouseListener l : item.getMouseListeners()) {
l.mouseClicked(itemEvent);
}
}
}
});

jList2.setCellRenderer(new ListCellRenderer<BookDetails>() {
@Override
public Component getListCellRendererComponent(JList<? extends BookDetails> list, BookDetails bookDetails, int index, boolean isSelected, boolean cellHasFocus) {
Expand Down

0 comments on commit 8614608

Please sign in to comment.