added intercepting filter
This commit is contained in:
parent
f753d68d1b
commit
6d4e47311a
@ -430,7 +430,7 @@ Presentation Tier patterns are the top-most level of the application, this is co
|
||||
## <a name="intercepting-filter">Intercepting Filter</a> [↑](#list-of-design-patterns)
|
||||
**Intent:** Provide pluggable filters to conduct necessary pre-processing and post-processing to requests from a client to a target
|
||||
|
||||

|
||||

|
||||
|
||||
**Applicability:** Use the Intercepting Filter pattern when
|
||||
* a system uses pre-processing or post-processing requests
|
||||
|
@ -1,74 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.iluwatar</groupId>
|
||||
<artifactId>java-design-patterns</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<modules>
|
||||
<module>abstract-factory</module>
|
||||
<module>builder</module>
|
||||
<module>factory-method</module>
|
||||
<module>prototype</module>
|
||||
<module>singleton</module>
|
||||
<module>adapter</module>
|
||||
<module>bridge</module>
|
||||
<module>composite</module>
|
||||
<module>decorator</module>
|
||||
<module>facade</module>
|
||||
<module>flyweight</module>
|
||||
<module>proxy</module>
|
||||
<module>chain</module>
|
||||
<module>command</module>
|
||||
<module>interpreter</module>
|
||||
<module>iterator</module>
|
||||
<module>mediator</module>
|
||||
<module>memento</module>
|
||||
<module>model-view-presenter</module>
|
||||
<module>observer</module>
|
||||
<module>state</module>
|
||||
<module>strategy</module>
|
||||
<module>template-method</module>
|
||||
<module>visitor</module>
|
||||
<module>double-checked-locking</module>
|
||||
<module>servant</module>
|
||||
<module>service-locator</module>
|
||||
<module>null-object</module>
|
||||
<module>event-aggregator</module>
|
||||
<module>callback</module>
|
||||
<module>execute-around</module>
|
||||
<module>property</module>
|
||||
</modules>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.11</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- Tell maven to compile using Java 1.7 -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.0</version>
|
||||
<configuration>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
<?xml version="1.0"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.iluwatar</groupId>
|
||||
<artifactId>java-design-patterns</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>intercepting-filter</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
14
intercepting-filter/src/main/AddressFilter.java
Normal file
14
intercepting-filter/src/main/AddressFilter.java
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class AddressFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[2].equals("")){
|
||||
return null;
|
||||
}else return request[2];
|
||||
}
|
||||
}
|
@ -3,6 +3,13 @@ import javax.swing.*;
|
||||
import javax.swing.table.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
/**
|
||||
*
|
||||
* This is an app that checks whether the order request is valid through pre-processing done via Filters
|
||||
* Each field has its own corresponding Filter
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class App{
|
||||
public static void main(String[] args){
|
||||
FilterManager filterManager = new FilterManager(new Target());
|
||||
@ -17,229 +24,15 @@ public class App{
|
||||
}
|
||||
}
|
||||
|
||||
interface Filter{
|
||||
public String execute(String[] request);
|
||||
}
|
||||
|
||||
class NameFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[0].equals("") || request[0].matches(".*[^\\w|\\s]+.*")){
|
||||
return null;
|
||||
}else return request[0];
|
||||
}
|
||||
}
|
||||
|
||||
class ContactFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[1].equals("") || request[1].matches(".*[^\\d]+.*") || request[1].length() != 11){
|
||||
return null;
|
||||
}else return request[1];
|
||||
}
|
||||
}
|
||||
|
||||
class AddressFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[2].equals("")){
|
||||
return null;
|
||||
}else return request[2];
|
||||
}
|
||||
}
|
||||
|
||||
class DepositFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[3].equals("")){
|
||||
return null;
|
||||
}else return request[3];
|
||||
}
|
||||
}
|
||||
|
||||
class OrderFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[4].equals("")){
|
||||
return null;
|
||||
}else return request[4];
|
||||
}
|
||||
}
|
||||
|
||||
class Target extends JFrame{
|
||||
JTable jt;
|
||||
JScrollPane jsp;
|
||||
DefaultTableModel dtm;
|
||||
JButton del;
|
||||
public Target(){
|
||||
super("Order System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(640,480);
|
||||
dtm = new DefaultTableModel(new Object[]{"Name", "Contact Number", "Address", "Deposit Number", "Order"},0);
|
||||
jt = new JTable(dtm);
|
||||
del = new JButton("Delete");
|
||||
setup();
|
||||
}
|
||||
private void setup(){
|
||||
setLayout(new BorderLayout());
|
||||
JPanel bot = new JPanel();
|
||||
add(jt.getTableHeader(), BorderLayout.NORTH);
|
||||
bot.setLayout(new BorderLayout());
|
||||
bot.add(del, BorderLayout.EAST);
|
||||
add(bot, BorderLayout.SOUTH);
|
||||
jsp = new JScrollPane(jt);
|
||||
jsp.setPreferredSize(new Dimension(500,250));
|
||||
add(jsp, BorderLayout.CENTER);
|
||||
|
||||
del.addActionListener(new DListener());
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(del);
|
||||
rootPane.setDefaultButton(del);
|
||||
setVisible(true);
|
||||
}
|
||||
public void execute(String[] request){
|
||||
//System.out.println(request[4]);
|
||||
dtm.addRow(new Object[]{request[0],request[1],request[2],request[3],request[4]});
|
||||
}
|
||||
|
||||
class DListener implements ActionListener{
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
int temp = jt.getSelectedRow();
|
||||
if(temp == -1) return;
|
||||
int temp2 = jt.getSelectedRowCount();
|
||||
for(int i = 0; i < temp2; i++){
|
||||
dtm.removeRow(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FilterChain{
|
||||
private ArrayList<Filter> filters = new ArrayList<Filter>();
|
||||
private Target target;
|
||||
|
||||
public void addFilter(Filter filter){
|
||||
filters.add(filter);
|
||||
}
|
||||
|
||||
public String execute(String request){
|
||||
String tempout[] = new String[filters.size()];
|
||||
|
||||
String tempin[] = request.split("&");
|
||||
int i = 0;
|
||||
try{
|
||||
for(Filter filter:filters){
|
||||
tempout[i] = null;
|
||||
tempout[i++] = filter.execute(tempin);
|
||||
//System.out.println(tempout[i]);
|
||||
}
|
||||
}catch(Exception e){
|
||||
return "NOT ENOUGHT INPUT";
|
||||
}
|
||||
|
||||
if(tempout[4] == null){
|
||||
return "INVALID ORDER!";
|
||||
}else if(tempout[3] == null){
|
||||
return "INVALID DEPOSIT NUMBER!";
|
||||
}else if(tempout[2] == null){
|
||||
return "INVALID ADRDESS!";
|
||||
}else if(tempout[1] == null){
|
||||
return "INVALID Contact Number!";
|
||||
}else if(tempout[0] == null){
|
||||
return "INVALID Name!";
|
||||
}else{
|
||||
target.execute(tempout);
|
||||
return "RUNNING...";
|
||||
}
|
||||
}
|
||||
|
||||
public void setTarget(Target target){
|
||||
this.target = target;
|
||||
}
|
||||
}
|
||||
|
||||
class FilterManager{
|
||||
FilterChain filterChain;
|
||||
|
||||
public FilterManager(Target target){
|
||||
filterChain = new FilterChain();
|
||||
filterChain.setTarget(target);
|
||||
}
|
||||
public void setFilter(Filter filter){
|
||||
filterChain.addFilter(filter);
|
||||
}
|
||||
public String filterRequest(String request){
|
||||
return filterChain.execute(request);
|
||||
}
|
||||
}
|
||||
|
||||
class Client extends JFrame{
|
||||
FilterManager filterManager;
|
||||
JLabel jl;
|
||||
JTextField[] jtfarr;
|
||||
JTextArea[] jtaarr;
|
||||
JButton[] buttarr;
|
||||
public Client(){
|
||||
super("Client System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(300,300);
|
||||
jl = new JLabel("RUNNING...");
|
||||
jtfarr = new JTextField[3];
|
||||
for(int i = 0; i < 3; i++){
|
||||
jtfarr[i] = new JTextField();
|
||||
}
|
||||
jtaarr = new JTextArea[2];
|
||||
for(int i = 0; i < 2; i++){
|
||||
jtaarr[i] = new JTextArea();
|
||||
}
|
||||
buttarr = new JButton[2];
|
||||
buttarr[0] = new JButton("Clear");
|
||||
buttarr[1] = new JButton("Process");
|
||||
|
||||
setup();
|
||||
}
|
||||
private void setup(){
|
||||
setLayout(new BorderLayout());
|
||||
JPanel panel = new JPanel();
|
||||
add(jl,BorderLayout.SOUTH);
|
||||
add(panel, BorderLayout.CENTER);
|
||||
panel.setLayout(new GridLayout(6,2));
|
||||
panel.add(new JLabel("Name"));
|
||||
panel.add(jtfarr[0]);
|
||||
panel.add(new JLabel("Contact Number"));
|
||||
panel.add(jtfarr[1]);
|
||||
panel.add(new JLabel("Address"));
|
||||
panel.add(jtaarr[0]);
|
||||
panel.add(new JLabel("Deposit Number"));
|
||||
panel.add(jtfarr[2]);
|
||||
panel.add(new JLabel("Order"));
|
||||
panel.add(jtaarr[1]);
|
||||
panel.add(buttarr[0]);
|
||||
panel.add(buttarr[1]);
|
||||
|
||||
buttarr[0].addActionListener(new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
for(JTextArea i : jtaarr){
|
||||
i.setText("");
|
||||
}
|
||||
for(JTextField i : jtfarr){
|
||||
i.setText("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
buttarr[1].addActionListener(new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
jl.setText(sendRequest(jtfarr[0].getText()+"&"+jtfarr[1].getText()+"&"+jtaarr[0].getText()+"&"+jtfarr[2].getText()+"&"+jtaarr[1].getText()));
|
||||
}
|
||||
});
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(buttarr[1]);
|
||||
rootPane.setDefaultButton(buttarr[1]);
|
||||
setVisible(true);
|
||||
}
|
||||
public void setFilterManager(FilterManager filterManager){
|
||||
this.filterManager = filterManager;
|
||||
}
|
||||
public String sendRequest(String request){
|
||||
return filterManager.filterRequest(request);
|
||||
}
|
||||
}
|
86
intercepting-filter/src/main/Client.java
Normal file
86
intercepting-filter/src/main/Client.java
Normal file
@ -0,0 +1,86 @@
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
/**
|
||||
* The Client class is responsible for handling the input and running them through filters inside the filterManager
|
||||
*
|
||||
* This is where Filters come to play as the client pre-processes the request before being displayed in the Target
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class Client extends JFrame{
|
||||
FilterManager filterManager;
|
||||
JLabel jl;
|
||||
JTextField[] jtFields;
|
||||
JTextArea[] jtAreas;
|
||||
JButton clearButton, processButton;
|
||||
public Client(){
|
||||
super("Client System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(300,300);
|
||||
jl = new JLabel("RUNNING...");
|
||||
jtFields = new JTextField[3];
|
||||
for(int i = 0; i < 3; i++){
|
||||
jtFields[i] = new JTextField();
|
||||
}
|
||||
jtAreas = new JTextArea[2];
|
||||
for(int i = 0; i < 2; i++){
|
||||
jtAreas[i] = new JTextArea();
|
||||
}
|
||||
clearButton = new JButton("Clear");
|
||||
processButton = new JButton("Process");
|
||||
|
||||
setup();
|
||||
}
|
||||
private void setup(){
|
||||
setLayout(new BorderLayout());
|
||||
JPanel panel = new JPanel();
|
||||
add(jl,BorderLayout.SOUTH);
|
||||
add(panel, BorderLayout.CENTER);
|
||||
panel.setLayout(new GridLayout(6,2));
|
||||
panel.add(new JLabel("Name"));
|
||||
panel.add(jtFields[0]);
|
||||
panel.add(new JLabel("Contact Number"));
|
||||
panel.add(jtFields[1]);
|
||||
panel.add(new JLabel("Address"));
|
||||
panel.add(jtAreas[0]);
|
||||
panel.add(new JLabel("Deposit Number"));
|
||||
panel.add(jtFields[2]);
|
||||
panel.add(new JLabel("Order"));
|
||||
panel.add(jtAreas[1]);
|
||||
panel.add(clearButton);
|
||||
panel.add(processButton);
|
||||
|
||||
clearButton.addActionListener(new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
for(JTextArea i : jtAreas){
|
||||
i.setText("");
|
||||
}
|
||||
for(JTextField i : jtFields){
|
||||
i.setText("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
processButton.addActionListener(new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
jl.setText(sendRequest(jtFields[0].getText()+"&"+jtFields[1].getText()+"&"+jtAreas[0].getText()+"&"+jtFields[2].getText()+"&"+jtAreas[1].getText()));
|
||||
}
|
||||
});
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(processButton);
|
||||
rootPane.setDefaultButton(processButton);
|
||||
setVisible(true);
|
||||
}
|
||||
public void setFilterManager(FilterManager filterManager){
|
||||
this.filterManager = filterManager;
|
||||
}
|
||||
public String sendRequest(String request){
|
||||
return filterManager.filterRequest(request);
|
||||
}
|
||||
}
|
13
intercepting-filter/src/main/ContactFilter.java
Normal file
13
intercepting-filter/src/main/ContactFilter.java
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class ContactFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[1].equals("") || request[1].matches(".*[^\\d]+.*") || request[1].length() != 11){
|
||||
return null;
|
||||
}else return request[1];
|
||||
}
|
||||
}
|
13
intercepting-filter/src/main/DepositFilter.java
Normal file
13
intercepting-filter/src/main/DepositFilter.java
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class DepositFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[3].equals("")){
|
||||
return null;
|
||||
}else return request[3];
|
||||
}
|
||||
}
|
8
intercepting-filter/src/main/Filter.java
Normal file
8
intercepting-filter/src/main/Filter.java
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Filter interface
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public interface Filter{
|
||||
public String execute(String[] request);
|
||||
}
|
48
intercepting-filter/src/main/FilterChain.java
Normal file
48
intercepting-filter/src/main/FilterChain.java
Normal file
@ -0,0 +1,48 @@
|
||||
import java.util.*;
|
||||
/**
|
||||
* Filter Chain carries multiple filters and help to execute them in defined order on target.
|
||||
*
|
||||
* @author joshzambales
|
||||
*/
|
||||
public class FilterChain{
|
||||
private ArrayList<Filter> filters = new ArrayList<Filter>();
|
||||
private Target target;
|
||||
|
||||
public FilterChain(Target target){
|
||||
this.target = target;
|
||||
}
|
||||
public void addFilter(Filter filter){
|
||||
filters.add(filter);
|
||||
}
|
||||
|
||||
public String execute(String request){
|
||||
String tempout[] = new String[filters.size()];
|
||||
|
||||
String tempin[] = request.split("&");
|
||||
int i = 0;
|
||||
try{
|
||||
for(Filter filter:filters){
|
||||
tempout[i] = null;
|
||||
tempout[i++] = filter.execute(tempin);
|
||||
}
|
||||
}catch(Exception e){
|
||||
return "NOT ENOUGHT INPUT";
|
||||
}
|
||||
|
||||
if(tempout[4] == null){
|
||||
return "INVALID ORDER!";
|
||||
}else if(tempout[3] == null){
|
||||
return "INVALID DEPOSIT NUMBER!";
|
||||
}else if(tempout[2] == null){
|
||||
return "INVALID ADRDESS!";
|
||||
}else if(tempout[1] == null){
|
||||
return "INVALID Contact Number!";
|
||||
}else if(tempout[0] == null){
|
||||
return "INVALID Name!";
|
||||
}else{
|
||||
target.execute(tempout);
|
||||
return "RUNNING...";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
23
intercepting-filter/src/main/FilterManager.java
Normal file
23
intercepting-filter/src/main/FilterManager.java
Normal file
@ -0,0 +1,23 @@
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
/**
|
||||
* Filter Manager manages the filters and Filter Chain.
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class FilterManager{
|
||||
FilterChain filterChain;
|
||||
|
||||
public FilterManager(Target target){
|
||||
filterChain = new FilterChain(target);
|
||||
}
|
||||
public void setFilter(Filter filter){
|
||||
filterChain.addFilter(filter);
|
||||
}
|
||||
public String filterRequest(String request){
|
||||
return filterChain.execute(request);
|
||||
}
|
||||
}
|
7
intercepting-filter/src/main/NameFilter.java
Normal file
7
intercepting-filter/src/main/NameFilter.java
Normal file
@ -0,0 +1,7 @@
|
||||
public class NameFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[0].equals("") || request[0].matches(".*[^\\w|\\s]+.*")){
|
||||
return null;
|
||||
}else return request[0];
|
||||
}
|
||||
}
|
13
intercepting-filter/src/main/OrderFilter.java
Normal file
13
intercepting-filter/src/main/OrderFilter.java
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class OrderFilter implements Filter{
|
||||
public String execute(String[] request){
|
||||
if(request[4].equals("")){
|
||||
return null;
|
||||
}else return request[4];
|
||||
}
|
||||
}
|
58
intercepting-filter/src/main/Target.java
Normal file
58
intercepting-filter/src/main/Target.java
Normal file
@ -0,0 +1,58 @@
|
||||
import java.util.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
/**
|
||||
* This is where the requests are displayed after being validated by filters.
|
||||
*
|
||||
* @author mjoshzambales
|
||||
*
|
||||
*/
|
||||
public class Target extends JFrame{
|
||||
JTable jt;
|
||||
JScrollPane jsp;
|
||||
DefaultTableModel dtm;
|
||||
JButton del;
|
||||
public Target(){
|
||||
super("Order System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(640,480);
|
||||
dtm = new DefaultTableModel(new Object[]{"Name", "Contact Number", "Address", "Deposit Number", "Order"},0);
|
||||
jt = new JTable(dtm);
|
||||
del = new JButton("Delete");
|
||||
setup();
|
||||
}
|
||||
private void setup(){
|
||||
setLayout(new BorderLayout());
|
||||
JPanel bot = new JPanel();
|
||||
add(jt.getTableHeader(), BorderLayout.NORTH);
|
||||
bot.setLayout(new BorderLayout());
|
||||
bot.add(del, BorderLayout.EAST);
|
||||
add(bot, BorderLayout.SOUTH);
|
||||
jsp = new JScrollPane(jt);
|
||||
jsp.setPreferredSize(new Dimension(500,250));
|
||||
add(jsp, BorderLayout.CENTER);
|
||||
|
||||
del.addActionListener(new DListener());
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(del);
|
||||
rootPane.setDefaultButton(del);
|
||||
setVisible(true);
|
||||
}
|
||||
public void execute(String[] request){
|
||||
dtm.addRow(new Object[]{request[0],request[1],request[2],request[3],request[4]});
|
||||
}
|
||||
|
||||
class DListener implements ActionListener{
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e){
|
||||
int temp = jt.getSelectedRow();
|
||||
if(temp == -1) return;
|
||||
int temp2 = jt.getSelectedRowCount();
|
||||
for(int i = 0; i < temp2; i++){
|
||||
dtm.removeRow(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user