Lim mellem klasser
HejsaJeg er ved at lave en højrekliksmenu/contextmenu som kan udføre et par handlinger for mig, men jeg har lidt svært ved at "lime" mine klasser sammen til formålet.
Jeg har en JTable klasse som indeholder mine data og hvorpå jeg har tilføjet min JPopupMenu, hvorfra jeg kan udføre mine handlinger.
Problemet opstår når jeg på min JPopupMenu klasse skal udfylde mine actionPerformed.
Er der nogen der kan levere noget "lim" til formålet ?
JTable - klasse
import java.awt.Color;
import javax.swing.JTable;
import javax.swing.table.TableModel;
import javax.swing.ListSelectionModel;
import java.awt.Dimension;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import GUI;
import PopupMenu;
public class CustomerTable extends JTable {
private JTable table = null;
private PopupMenu popupmenu = null;
public CustomerTable(TableModel tm){
super(tm);
table = this;
getTableHeader().setReorderingAllowed(false);
setDragEnabled(false);
setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
setShowHorizontalLines(true);
setGridColor(Color.lightGray);
setShowVerticalLines(false);
configureEnclosingScrollPane();
setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 11));
setColumnSelectionAllowed(false);
setRowSelectionAllowed(true);
setCellSelectionEnabled(true);
setPreferredScrollableViewportSize(new Dimension(600, 400));
setIntercellSpacing(new Dimension(2, 2));
setRowHeight(15);
setShowHorizontalLines(true);
setShowVerticalLines(true);
//tilføj menu
this.setPopupmenu(GUI.getCustomerSMSContextMenu());
getPopupmenu().createPopupMenu(this);
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
int selectedCol = getSelectedColumn();
int selectedRow = getSelectedRow();
if (selectedCol == -1 || selectedRow == -1) return;
if(e.getModifiers() == InputEvent.BUTTON3_MASK){
}
}
});
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
int selectedCol = getSelectedColumn();
int selectedRow = getSelectedRow();
if (selectedCol == -1 || selectedRow == -1) return;
if(e.getModifiers() == InputEvent.BUTTON3_MASK){
//hvis der klikkes på kolonnen med telfonnr
if(selectedCol == 0){
getPopupmenu().getSearch().setEnabled(true);
getPopupmenu().getSendsingle().setEnabled(true);
}else{
getPopupmenu().getSearch().setEnabled(false);
getPopupmenu().getSendsingle().setEnabled(false);
}
}
}
});
}
/**
* @return
*/
public PopupMenu getPopupmenu() {
return popupmenu;
}
/**
* @param menu
*/
public void setPopupmenu(PopupMenu menu) {
popupmenu = menu;
}
}
JPopupMenu - klasse
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class PopupMenu extends JPopupMenu implements ActionListener, ItemListener {
private JMenuItem search = new JMenuItem();
private JMenuItem sendmulti = new JMenuItem();
private JMenuItem sendsingle = new JMenuItem();
private JMenuItem showdetail = new JMenuItem();
public void createPopupMenu(JComponent c) {
//Create the popup menu.
JPopupMenu popup = new JPopupMenu();
search.setText("Vis historik");
search.addActionListener(this);
search.setEnabled(false);
popup.add(search);
sendmulti.setText("Send multibesked");
sendmulti.addActionListener(this);
sendmulti.setEnabled(false);
popup.add(sendmulti);
sendsingle.setText("Send besked");
sendsingle.addActionListener(this);
sendsingle.setEnabled(false);
popup.add(sendsingle);
showdetail.setText("Vis detaljer / tilføj til arkiv");
showdetail.addActionListener(this);
showdetail.setEnabled(false);
popup.add(showdetail);
//Add listener to the text area so the popup menu can come up.
MouseListener popupListener = new PopupMenuListener(popup);
c.addMouseListener(popupListener);
}
public void actionPerformed(ActionEvent e) {
JMenuItem source = (JMenuItem)(e.getSource());
if(source.getLabel() == "Vis historik"){
//Her mangler jeg adgang til min JTable
}
if(source.getLabel() == "Send multibesked"){
}
if(source.getLabel() == "Send besked"){
}
if(source.getLabel() == "Vis detaljer / tilføj til arkiv"){
}
}
public void itemStateChanged(ItemEvent e) {
JMenuItem source = (JMenuItem)(e.getSource());
}
/**
* @return
*/
public JMenuItem getSearch() {
return search;
}
/**
* @return
*/
public JMenuItem getSendmulti() {
return sendmulti;
}
/**
* @return
*/
public JMenuItem getSendsingle() {
return sendsingle;
}
/**
* @return
*/
public JMenuItem getShowdetail() {
return showdetail;
}
/**
* @param item
*/
public void setSearch(JMenuItem item) {
search = item;
}
/**
* @param item
*/
public void setSendmulti(JMenuItem item) {
sendmulti = item;
}
/**
* @param item
*/
public void setSendsingle(JMenuItem item) {
sendsingle = item;
}
/**
* @param item
*/
public void setShowdetail(JMenuItem item) {
showdetail = item;
}
}
