该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class ListAddItemDemo extends JFrame {
public static void main(String[] args) throws Exception {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame f = new ListAddItemDemo();
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
});
}
private JList list;
private Action add;
private JDialog dialog;
public ListAddItemDemo() {
super("Test Add Ite***ist = new JList(new DefaultListModel());
dialog = new AddItemDialog(this);
add = new AbstractAction("Add Item") {
@Override
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true);
}
};
initLayout();
}
private void initLayout() {
getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);
JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
controlPanel.add(new JButton(add));
getContentPane().add(controlPanel, BorderLayout.SOUTH);
}
@SuppressWarnings("unchecked")
public void addItem(Object item) {
((DefaultListModel)list.getModel()).addElement(item);
}
}
class AddItemDialog extends JDialog {
private JTextField input;
private Action[] actions;
private ListAddItemDemo parent;
AddItemDialog(ListAddItemDemo parent) {
super(parent, "Add Item");
this.parent = parent;
input = new JTextField();
actions = new Action[] {
new AbstractAction("OK") {
@Override
public void actionPerformed(ActionEvent e) {
String text = input.getText().trim();
dispose();
if( !text.isEmpty() )
AddItemDialog.this.parent.addItem(text);
}
},
new AbstractAction("Cancel") {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
}
};
initLayout();
pack();
setLocationRelativeTo(parent);
}
private void initLayout() {
getContentPane().setLayout(new GridLayout(2, 1));
JPanel inputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
inputPanel.add(new JLabel("Input : "));
input.setPreferredSize(new Dimension(300, 20));
inputPanel.add(input);
JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
for(Action a : actions)
controlPanel.add(new JButton(a));
getContentPane().add(inputPanel);
getContentPane().add(controlPanel);
}
}