Java/Swing Components/List
Содержание
CheckBox List
/*
* Copyright (C) 2005 - 2007 JasperSoft Corporation. All rights reserved.
* http://www.jaspersoft.ru.
*
* Unless you have purchased a commercial license agreement from JasperSoft,
* the following license terms apply:
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation.
*
* This program is distributed WITHOUT ANY WARRANTY; and without the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
* or write to:
*
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330,
* Boston, MA USA 02111-1307
*
*
*
*
* CheckBoxList.java
*
* Created on October 5, 2006, 9:53 AM
*
*/
/**
*
* @author gtoffoli
*/
import java.awt.Color;
import java.awt.ruponent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
public class CheckBoxList extends JList {
public CheckBoxList() {
super();
setModel(new DefaultListModel());
setCellRenderer(new CheckboxCellRenderer());
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int index = locationToIndex(e.getPoint());
if (index != -1) {
Object obj = getModel().getElementAt(index);
if (obj instanceof JCheckBox) {
JCheckBox checkbox = (JCheckBox) obj;
checkbox.setSelected(!checkbox.isSelected());
repaint();
}
}
}
}
);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
@SuppressWarnings("unchecked")
public int[] getCheckedIdexes() {
java.util.List list = new java.util.ArrayList();
DefaultListModel dlm = (DefaultListModel) getModel();
for (int i = 0; i < dlm.size(); ++i) {
Object obj = getModel().getElementAt(i);
if (obj instanceof JCheckBox) {
JCheckBox checkbox = (JCheckBox) obj;
if (checkbox.isSelected()) {
list.add(new Integer(i));
}
}
}
int[] indexes = new int[list.size()];
for (int i = 0; i < list.size(); ++i) {
indexes[i] = ((Integer) list.get(i)).intValue();
}
return indexes;
}
@SuppressWarnings("unchecked")
public java.util.List getCheckedItems() {
java.util.List list = new java.util.ArrayList();
DefaultListModel dlm = (DefaultListModel) getModel();
for (int i = 0; i < dlm.size(); ++i) {
Object obj = getModel().getElementAt(i);
if (obj instanceof JCheckBox) {
JCheckBox checkbox = (JCheckBox) obj;
if (checkbox.isSelected()) {
list.add(checkbox);
}
}
}
return list;
}
}
/*
* Copyright (C) 2005 - 2007 JasperSoft Corporation. All rights reserved.
* http://www.jaspersoft.ru.
*
* Unless you have purchased a commercial license agreement from JasperSoft, the
* following license terms apply:
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed WITHOUT ANY WARRANTY; and without the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see http://www.gnu.org/licenses/gpl.txt or write to:
*
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA USA
* 02111-1307
*
*
*
*
* CheckboxCellRenderer.java
*
* Created on October 5, 2006, 10:03 AM
*
*/
/**
*
* @author gtoffoli
*/
class CheckboxCellRenderer extends DefaultListCellRenderer {
protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
if (value instanceof CheckBoxListEntry) {
CheckBoxListEntry checkbox = (CheckBoxListEntry) value;
checkbox.setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
if (checkbox.isRed()) {
checkbox.setForeground(Color.red);
} else {
checkbox.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
}
checkbox.setEnabled(isEnabled());
checkbox.setFont(getFont());
checkbox.setFocusPainted(false);
checkbox.setBorderPainted(true);
checkbox.setBorder(isSelected ? UIManager.getBorder("List.focusCellHighlightBorder")
: noFocusBorder);
return checkbox;
} else {
return super.getListCellRendererComponent(list, value.getClass().getName(), index,
isSelected, cellHasFocus);
}
}
}
/*
* Copyright (C) 2005 - 2007 JasperSoft Corporation. All rights reserved.
* http://www.jaspersoft.ru.
*
* Unless you have purchased a commercial license agreement from JasperSoft, the
* following license terms apply:
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed WITHOUT ANY WARRANTY; and without the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see http://www.gnu.org/licenses/gpl.txt or write to:
*
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA USA
* 02111-1307
*
*
*
*
* CheckBoxListEntry.java
*
* Created on October 5, 2006, 10:19 AM
*
*/
/**
*
* @author gtoffoli
*/
class CheckBoxListEntry extends JCheckBox {
private Object value = null;
private boolean red = false;
public CheckBoxListEntry(Object itemValue, boolean selected) {
super(itemValue == null ? "" : "" + itemValue, selected);
setValue(itemValue);
}
public boolean isSelected() {
return super.isSelected();
}
public void setSelected(boolean selected) {
super.setSelected(selected);
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public boolean isRed() {
return red;
}
public void setRed(boolean red) {
this.red = red;
}
}
CheckBox List by Zhiguo Yin
/*
author: yinzhiguo
mail: yin_zhiguo at hotmail.ru
env: ubuntu 8.04 jdk1.6.0
this is a checkbox list ctrl for developer java swing application.
it is very simple. you only require implements a method!
require apache commons-lang.jar
For example:
langList = new CheckboxList(ts){
@Override
public Object getDataLabel(Object data){
Book a = (Book)data;
return a.getTitle();
}
};
centerPane.add(langList, BorderLayout.CENTER);
ArrayList as = langList.getSelectedData();
the ts is a Object array that your checkboxlist model.
you will implements the getDataLabel method.
get user"s chooser is simple, only invoke langList.getSelectedData()
*/
package com.jexp.java.swing.rumon.pane;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JMenuItem;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
/**
* this is a checkbox list for swing application
* @author yinzhiguo
*/
public class CheckboxList extends javax.swing.JPanel {
private Vector<BooleanWrap> dataModel = new Vector<BooleanWrap>();
private int columnWidth = 0;
public CheckboxList( Object[] datas) {
if(datas == null)
throw new java.lang.IllegalArgumentException("datas is null!");
int max = 0;
for(Object o : datas)
{
BooleanWrap bw = new BooleanWrap(o);
int a = bw.getLabel().length();
if(max < a)
max = a;
dataModel.add(bw);
}
columnWidth = max;
initComponents();
this.setPreferredSize(table.getPreferredSize());
}
public CheckboxList(ArrayList list) {
if(list == null || list.isEmpty())
throw new java.lang.IllegalArgumentException("list is null or empty!");
int max = 0;
for(Object o : list)
{
BooleanWrap bw = new BooleanWrap(o);
int a = bw.getLabel().length();
if(max < a)
max = a;
dataModel.add(bw);
}
columnWidth = max;
initComponents();
this.setPreferredSize(table.getPreferredSize());
}
private JMenuItem getMenuItem(String id) {
JMenuItem item = new javax.swing.JMenuItem();
if("all".equals(id))
{
item.setText("??");
}else if("notAll".equals(id))
{
item.setText("???");
}else if("reverse".equals(id))
{
item.setText("??");
}
return item;
}
public ArrayList getSelectedData(){
ArrayList i = new ArrayList();
for(BooleanWrap bw : dataModel){
if(bw.getChecked()){
i.add(bw.getData());
}
}
return i;
}
private TableModel getTableModel() {
return new DataModel();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
popupMenu = new javax.swing.JPopupMenu();
allMenuItem = getMenuItem("all");
notAllMenuItem = getMenuItem("notAll");
reverseMenuItem = getMenuItem("reverse");
colText = new javax.swing.JTextField();
scrollPane = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
allMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
allMenuItemActionPerformed(evt);
}
});
popupMenu.add(allMenuItem);
notAllMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
notAllMenuItemActionPerformed(evt);
}
});
popupMenu.add(notAllMenuItem);
reverseMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
reverseMenuItemActionPerformed(evt);
}
});
popupMenu.add(reverseMenuItem);
setLayout(new java.awt.BorderLayout());
add(colText, java.awt.BorderLayout.PAGE_START);
table.setModel(getTableModel());
table.setComponentPopupMenu(popupMenu);
setTableParam();
scrollPane.setViewportView(table);
add(scrollPane, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void actionPerformOfButton(int type){
if(!dataModel.isEmpty()){
for(BooleanWrap bw : dataModel)
{
if(type == 1){
bw.setChecked(Boolean.TRUE);
}else if(type == 2)
{
bw.setChecked(Boolean.FALSE);
}else if(type == 3){
bw.setChecked(!bw.getChecked());
}
}
((AbstractTableModel)table.getModel()).fireTableDataChanged();
}
}
private void allMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allMenuItemActionPerformed
// TODO add your handling code here:
actionPerformOfButton(1);
}//GEN-LAST:event_allMenuItemActionPerformed
private void notAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_notAllMenuItemActionPerformed
// TODO add your handling code here:
actionPerformOfButton(2);
}//GEN-LAST:event_notAllMenuItemActionPerformed
private void reverseMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reverseMenuItemActionPerformed
// TODO add your handling code here:
actionPerformOfButton(3);
}//GEN-LAST:event_reverseMenuItemActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem allMenuItem;
private javax.swing.JTextField colText;
private javax.swing.JMenuItem notAllMenuItem;
private javax.swing.JPopupMenu popupMenu;
private javax.swing.JMenuItem reverseMenuItem;
private javax.swing.JScrollPane scrollPane;
private javax.swing.JTable table;
// End of variables declaration//GEN-END:variables
private void setTableParam() {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// table.setDragEnabled(false);
table.setShowGrid(false);
table.getTableHeader().setEnabled(false);
//???????
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setPreferredSize(new Dimension(0, 0));
table.getTableHeader().setDefaultRenderer(renderer);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
ListSelectionModel sm = (ListSelectionModel) e.getSource();
int row = sm.getLeadSelectionIndex();
if(row >=0){
BooleanWrap bw = dataModel.get(row);
colText.setText(bw.getLabel());
}
}
});
DefaultTableColumnModel dtm = (DefaultTableColumnModel)table.getColumnModel();
int count = dtm.getColumnCount();
for(int i = 0; i < count; i++)
{
TableColumn tc = dtm.getColumn(i);
tc.setResizable(false);
if(i == 0){
tc.setWidth(15);
tc.setPreferredWidth(25);
}else{
tc.setWidth(columnWidth * 3);
tc.setPreferredWidth(columnWidth * 10);
}
}
ColumnColorTableCellRenderer ctlr = new ColumnColorTableCellRenderer();
table.getColumnModel().getColumn(1).setCellRenderer(ctlr);
}
class DataModel extends AbstractTableModel {
private String[] columnNames = {"...", "..."};
public Class getColumnClass(int columnIndex) {
if(columnIndex == 0)
return Boolean.class;
return String.class;
}
public String getColumnName(int column) {
return columnNames[column];
}
public int getRowCount() {
return dataModel.size();
}
public int getColumnCount() {
return columnNames.length;
}
public Object getValueAt(int rowIndex, int colIndex) {
BooleanWrap bw = dataModel.get(rowIndex);
if(colIndex == 1)
return getDataLabel(bw.getData());
else{
return bw.getChecked();
}
}
@Override
public void setValueAt(Object value, int rowIndex, int colIndex) {
if(colIndex == 0){
Boolean flag = (Boolean)value;
BooleanWrap bw = dataModel.get(rowIndex);
bw.setChecked(flag);
}
}
@Override
public boolean isCellEditable(int rowIndex,
int columnIndex) {
if(columnIndex == 0)
return true;
return false;
}
}
/**
* ????????list????????
* ????,??????
* @param data
* @return
*/
public Object getDataLabel(Object data){
return data.toString();
}
class BooleanWrap{
private Boolean checked = Boolean.FALSE;
private Object data = null;
public BooleanWrap(Object obj)
{
this.data = obj;
}
public Boolean getChecked() {
return checked;
}
public void setChecked(Boolean checked) {
this.checked = checked;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getLabel(){
return (String)getDataLabel(this.getData());
}
}
}
//////////////////////////////////////////////////////
/*
* AlternationColorTableCellRenderer.java
*
* Created on 2007?9?14?, ??10:32
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package com.jexp.java.swing.rumon.pane;
import java.awt.Color;
import java.awt.ruponent;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
/**
*
* @author java
*/
public class ColumnColorTableCellRenderer extends DefaultTableCellRenderer{
private Color colorOne = Color.white;
private Color colorTwo = new Color(206,231,255);
private Color textColor = Color.BLUE;
private Color numberColor = Color.RED;
private Color dateColor = Color.BLUE;
/** Creates a new instance of AlternationColorTableCellRenderer */
public ColumnColorTableCellRenderer(Color one, Color two) {
if(one != null)
colorOne = one;
if(two != null)
colorTwo = two;
}
public ColumnColorTableCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if(value instanceof String)
{
String str = (String)value;
this.setForeground(textColor);
}else if(value instanceof Integer || value instanceof Double || value instanceof Long)
{
this.setForeground(numberColor);
this.setHorizontalAlignment(SwingConstants.RIGHT);
}
if(row % 2 == 0){
setBackground(colorOne);
}
else if(row % 2 == 1)
{
setBackground(colorTwo);
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
public Color getTextColor() {
return textColor;
}
public void setTextColor(Color textColor) {
this.textColor = textColor;
}
public Color getNumberColor() {
return numberColor;
}
public void setNumberColor(Color numberColor) {
this.numberColor = numberColor;
}
public Color getDateColor() {
return dateColor;
}
public void setDateColor(Color dateColor) {
this.dateColor = dateColor;
}
}
//////////////////////////////////////////////////////
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jexp.java.swing.rumon.pane;
import com.uusee.platform.util.*;
import java.awt.ruponent;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Point;
import java.awt.Toolkit;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
/**
* @email yin_zhiguo@hotmail.ru
* @author yinzhiguo
*/
public class SwingUtil {
/** Creates a new instance of SwingUtil */
private SwingUtil() {
}
public static String[] getClassNameOfLookAndFeel() {
LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels();
String[] name = new String[lookAndFeelInfos.length];
for (int i = 0; i < lookAndFeelInfos.length; i++) {
name[i] = lookAndFeelInfos[i].getClassName();
}
return name;
}
public static void setLookAndFeel(String clzz) {
try {
UIManager.setLookAndFeel(clzz);
} catch (Exception exception) {
exception.printStackTrace();
}
}
public static int getScreenWidth() {
return getScreenSize().width;
}
public static int getScreenHeight() {
return getScreenSize().height;
}
public static Dimension getScreenSize() {
return Toolkit.getDefaultToolkit().getScreenSize();
}
public static void setLocationToCenterOfComponent(Component parent, Component child)
{
Point parentPoint = parent.getLocation();
Dimension parentDim = parent.getSize();
Dimension childDim = child.getSize();
child.setLocation(parentPoint.x + (parentDim.width - childDim.width)/2, parentPoint.y + (parentDim.height - childDim.height)/2);
}
/**
* ???????
* @param comp
*/
public static void setLocationToCenterOfScreen(Component comp) {
Dimension screenSize = getScreenSize();
Dimension frameSize = comp.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
comp.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
}
public static String[] convertToMaxWidth(String[] strs, FontMetrics fm){
int max = 0; //????
int fix = fm.stringWidth(" ");//???????(?????)
int[] widths = new int[strs.length]; //???????(?????)
int[] dis = new int[strs.length]; //???????(?????)
for(int i = 0; i < strs.length; i++){
int w = fm.stringWidth(strs[i]);
// System.out.println(strs[i] + " " + w);
widths[i] = w;
if(w > max){
max = w;
}
}
max = max + fix * 4;
// System.out.println("max: " + max + ", fix: " + fix);
for(int i = 0; i < strs.length; i++){
int distance = max - widths[i]; //??????
dis[i] = (distance / fix) + 1;
}
String[] res = new String[strs.length];
for(int i = 0; i < strs.length; i++){
res[i] = Helper.leftAppendSpace(strs[i], dis[i]);
//System.out.println(strs[i] + " " + dis[i] + ", "+ widths[i] + ", " + fm.stringWidth(strs[i]));
}
return res;
}
}
//////////////////////////////////////////////////////
package com.jexp.java.swing.rumon.pane;
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
/**
* @email yin_zhiguo@hotmail.ru
* @author yinzhiguo
*/
public class CheckboxListTestFrame extends javax.swing.JFrame {
/** Creates new form CheckboxListTestFrame */
public CheckboxListTestFrame() {
initComponents();
this.setSize(140, 230);
this.setTitle("CheckboxList ??");
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
centerPane = new javax.swing.JPanel();
testButPane = new javax.swing.JPanel();
testBut = getButtonBy("test");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
centerPane.setLayout(new java.awt.BorderLayout());
testButPane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
testBut.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
testButActionPerformed(evt);
}
});
testButPane.add(testBut);
centerPane.add(testButPane, java.awt.BorderLayout.PAGE_END);
prepareCheckboxListPane();
getContentPane().add(centerPane, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* ??ID??JButton???
* @param id ?????
* @return ????
*/
public JButton getButtonBy(String id){
JButton but = new JButton();
if("test".equals(id)){
but.setText("??");
but.setToolTipText("??");
}
return but;
}
private CheckboxList langList = null;
class Book{
private String title = "";
private double price = 0.0;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
private void prepareCheckboxListPane() {
Book t = new Book();
t.setTitle("Java??");
t.setPrice(20.5);
Book t1 = new Book();
t1.setTitle("PHP??");
t1.setPrice(30.5);
Book t2 = new Book();
t2.setTitle("C++??");
t2.setPrice(50.5);
Book t3 = new Book();
t3.setTitle("Python??");
t3.setPrice(30.5);
Book t4 = new Book();
t4.setTitle("Perl??");
t4.setPrice(23.5);
Book t5 = new Book();
t5.setTitle("SmallTalk??");
t5.setPrice(23.5);
Book t6 = new Book();
t6.setTitle("Ruby??");
t6.setPrice(23.5);
Book t7 = new Book();
t7.setTitle("Lisp??");
t7.setPrice(23.5);
Book t8 = new Book();
t8.setTitle("Shell??");
t8.setPrice(23.5);
Book[] ts = {t,t1,t2,t3,t4,t5,t6,t7,t8};
langList = new CheckboxList(ts){
@Override
public Object getDataLabel(Object data){
Book a = (Book)data;
return a.getTitle();
}
};
centerPane.add(langList, BorderLayout.CENTER);
}
private void testButActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_testButActionPerformed
// TODO add your handling code here:
ArrayList as = langList.getSelectedData();
if(as.isEmpty()){
JOptionPane.showMessageDialog(this, "????????!", "??", JOptionPane.INFORMATION_MESSAGE);
}else{
StringBuffer sub = new StringBuffer();
sub.append("<html>");
sub.append("<b>????:</b><br>");
sub.append("<ul>");
for(Object o : as){
Book b = (Book)o;
sub.append("<li>" + b.getTitle() + ", " + b.getPrice() + "</li>");
}
sub.append("</ul>");
sub.append("</html>");
JOptionPane.showMessageDialog(this, sub.toString(), "??", JOptionPane.INFORMATION_MESSAGE);
}
}//GEN-LAST:event_testButActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
UIManager.put("swing.boldMetal", Boolean.FALSE);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
CheckboxListTestFrame cltf = new CheckboxListTestFrame();
SwingUtil.setLocationToCenterOfScreen(cltf);
cltf.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel centerPane;
private javax.swing.JButton testBut;
private javax.swing.JPanel testButPane;
// End of variables declaration//GEN-END:variables
}
Check List Example
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html
//File:CheckListExample.java
/* (swing1.1.1beta2) */
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.MetalIconFactory;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;
/**
* @version 1.0 04/24/99
*/
public class CheckListExample extends JFrame {
public CheckListExample() {
super("CheckList Example");
String[] strs = { "swing", "home", "basic", "metal", "JList" };
final JList list = new JList(createData(strs));
// set "home" icon
Icon icon = MetalIconFactory.getFileChooserHomeFolderIcon();
((CheckableItem) list.getModel().getElementAt(1)).setIcon(icon);
list.setCellRenderer(new CheckListRenderer());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBorder(new EmptyBorder(0, 4, 0, 0));
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int index = list.locationToIndex(e.getPoint());
CheckableItem item = (CheckableItem) list.getModel()
.getElementAt(index);
item.setSelected(!item.isSelected());
Rectangle rect = list.getCellBounds(index, index);
list.repaint(rect);
}
});
JScrollPane sp = new JScrollPane(list);
final JTextArea textArea = new JTextArea(3, 10);
JScrollPane textPanel = new JScrollPane(textArea);
JButton printButton = new JButton("print");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ListModel model = list.getModel();
int n = model.getSize();
for (int i = 0; i < n; i++) {
CheckableItem item = (CheckableItem) model.getElementAt(i);
if (item.isSelected()) {
textArea.append(item.toString());
textArea.append(System.getProperty("line.separator"));
}
}
}
});
JButton clearButton = new JButton("clear");
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
JPanel panel = new JPanel(new GridLayout(2, 1));
panel.add(printButton);
panel.add(clearButton);
getContentPane().add(sp, BorderLayout.CENTER);
getContentPane().add(panel, BorderLayout.EAST);
getContentPane().add(textPanel, BorderLayout.SOUTH);
}
private CheckableItem[] createData(String[] strs) {
int n = strs.length;
CheckableItem[] items = new CheckableItem[n];
for (int i = 0; i < n; i++) {
items[i] = new CheckableItem(strs[i]);
}
return items;
}
class CheckableItem {
private String str;
private boolean isSelected;
private Icon icon;
public CheckableItem(String str) {
this.str = str;
isSelected = false;
}
public void setSelected(boolean b) {
isSelected = b;
}
public boolean isSelected() {
return isSelected;
}
public String toString() {
return str;
}
public void setIcon(Icon icon) {
this.icon = icon;
}
public Icon getIcon() {
return icon;
}
}
class CheckListRenderer extends CheckRenderer implements ListCellRenderer {
Icon commonIcon;
public CheckListRenderer() {
check.setBackground(UIManager.getColor("List.textBackground"));
label.setForeground(UIManager.getColor("List.textForeground"));
commonIcon = UIManager.getIcon("Tree.leafIcon");
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean hasFocus) {
setEnabled(list.isEnabled());
check.setSelected(((CheckableItem) value).isSelected());
label.setFont(list.getFont());
label.setText(value.toString());
label.setSelected(isSelected);
label.setFocus(hasFocus);
Icon icon = ((CheckableItem) value).getIcon();
if (icon == null) {
icon = commonIcon;
}
label.setIcon(icon);
return this;
}
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception evt) {}
CheckListExample frame = new CheckListExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(300, 200);
frame.setVisible(true);
}
}
class CheckRenderer extends JPanel implements TreeCellRenderer {
protected JCheckBox check;
protected TreeLabel label;
public CheckRenderer() {
setLayout(null);
add(check = new JCheckBox());
add(label = new TreeLabel());
check.setBackground(UIManager.getColor("Tree.textBackground"));
label.setForeground(UIManager.getColor("Tree.textForeground"));
}
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
String stringValue = tree.convertValueToText(value, isSelected,
expanded, leaf, row, hasFocus);
setEnabled(tree.isEnabled());
check.setSelected(((CheckNode) value).isSelected());
label.setFont(tree.getFont());
label.setText(stringValue);
label.setSelected(isSelected);
label.setFocus(hasFocus);
if (leaf) {
label.setIcon(UIManager.getIcon("Tree.leafIcon"));
} else if (expanded) {
label.setIcon(UIManager.getIcon("Tree.openIcon"));
} else {
label.setIcon(UIManager.getIcon("Tree.closedIcon"));
}
return this;
}
public Dimension getPreferredSize() {
Dimension d_check = check.getPreferredSize();
Dimension d_label = label.getPreferredSize();
return new Dimension(d_check.width + d_label.width,
(d_check.height < d_label.height ? d_label.height
: d_check.height));
}
public void doLayout() {
Dimension d_check = check.getPreferredSize();
Dimension d_label = label.getPreferredSize();
int y_check = 0;
int y_label = 0;
if (d_check.height < d_label.height) {
y_check = (d_label.height - d_check.height) / 2;
} else {
y_label = (d_check.height - d_label.height) / 2;
}
check.setLocation(0, y_check);
check.setBounds(0, y_check, d_check.width, d_check.height);
label.setLocation(d_check.width, y_label);
label.setBounds(d_check.width, y_label, d_label.width, d_label.height);
}
public void setBackground(Color color) {
if (color instanceof ColorUIResource)
color = null;
super.setBackground(color);
}
public class TreeLabel extends JLabel {
boolean isSelected;
boolean hasFocus;
public TreeLabel() {
}
public void setBackground(Color color) {
if (color instanceof ColorUIResource)
color = null;
super.setBackground(color);
}
public void paint(Graphics g) {
String str;
if ((str = getText()) != null) {
if (0 < str.length()) {
if (isSelected) {
g.setColor(UIManager
.getColor("Tree.selectionBackground"));
} else {
g.setColor(UIManager.getColor("Tree.textBackground"));
}
Dimension d = getPreferredSize();
int imageOffset = 0;
Icon currentI = getIcon();
if (currentI != null) {
imageOffset = currentI.getIconWidth()
+ Math.max(0, getIconTextGap() - 1);
}
g.fillRect(imageOffset, 0, d.width - 1 - imageOffset,
d.height);
if (hasFocus) {
g.setColor(UIManager
.getColor("Tree.selectionBorderColor"));
g.drawRect(imageOffset, 0, d.width - 1 - imageOffset,
d.height - 1);
}
}
}
super.paint(g);
}
public Dimension getPreferredSize() {
Dimension retDimension = super.getPreferredSize();
if (retDimension != null) {
retDimension = new Dimension(retDimension.width + 3,
retDimension.height);
}
return retDimension;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
public void setFocus(boolean hasFocus) {
this.hasFocus = hasFocus;
}
}
}
class CheckNode extends DefaultMutableTreeNode {
public final static int SINGLE_SELECTION = 0;
public final static int DIG_IN_SELECTION = 4;
protected int selectionMode;
protected boolean isSelected;
public CheckNode() {
this(null);
}
public CheckNode(Object userObject) {
this(userObject, true, false);
}
public CheckNode(Object userObject, boolean allowsChildren,
boolean isSelected) {
super(userObject, allowsChildren);
this.isSelected = isSelected;
setSelectionMode(DIG_IN_SELECTION);
}
public void setSelectionMode(int mode) {
selectionMode = mode;
}
public int getSelectionMode() {
return selectionMode;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
if ((selectionMode == DIG_IN_SELECTION) && (children != null)) {
Enumeration e = children.elements();
while (e.hasMoreElements()) {
CheckNode node = (CheckNode) e.nextElement();
node.setSelected(isSelected);
}
}
}
public boolean isSelected() {
return isSelected;
}
// If you want to change "isSelected" by CellEditor,
/*
* public void setUserObject(Object obj) { if (obj instanceof Boolean) {
* setSelected(((Boolean)obj).booleanValue()); } else {
* super.setUserObject(obj); } }
*/
}
Check List Example 2
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html
//File:CheckListExample2.java
/* (swing1.1.1beta2) */
import java.awt.BorderLayout;
import java.awt.ruponent;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
/**
* @version 1.0 04/26/99
*/
public class CheckListExample2 extends JFrame {
public CheckListExample2() {
super("CheckList Example");
String[] strs = { "swing", "home", "basic", "metal", "JList" };
final JList list = new JList(createData(strs));
list.setCellRenderer(new CheckListRenderer());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBorder(new EmptyBorder(0, 4, 0, 0));
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int index = list.locationToIndex(e.getPoint());
CheckableItem item = (CheckableItem) list.getModel()
.getElementAt(index);
item.setSelected(!item.isSelected());
Rectangle rect = list.getCellBounds(index, index);
list.repaint(rect);
}
});
JScrollPane sp = new JScrollPane(list);
final JTextArea textArea = new JTextArea(3, 10);
JScrollPane textPanel = new JScrollPane(textArea);
JButton printButton = new JButton("print");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ListModel model = list.getModel();
int n = model.getSize();
for (int i = 0; i < n; i++) {
CheckableItem item = (CheckableItem) model.getElementAt(i);
if (item.isSelected()) {
textArea.append(item.toString());
textArea.append(System.getProperty("line.separator"));
}
}
}
});
JButton clearButton = new JButton("clear");
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
JPanel panel = new JPanel(new GridLayout(2, 1));
panel.add(printButton);
panel.add(clearButton);
getContentPane().add(sp, BorderLayout.CENTER);
getContentPane().add(panel, BorderLayout.EAST);
getContentPane().add(textPanel, BorderLayout.SOUTH);
}
private CheckableItem[] createData(String[] strs) {
int n = strs.length;
CheckableItem[] items = new CheckableItem[n];
for (int i = 0; i < n; i++) {
items[i] = new CheckableItem(strs[i]);
}
return items;
}
class CheckableItem {
private String str;
private boolean isSelected;
public CheckableItem(String str) {
this.str = str;
isSelected = false;
}
public void setSelected(boolean b) {
isSelected = b;
}
public boolean isSelected() {
return isSelected;
}
public String toString() {
return str;
}
}
class CheckListRenderer extends JCheckBox implements ListCellRenderer {
public CheckListRenderer() {
setBackground(UIManager.getColor("List.textBackground"));
setForeground(UIManager.getColor("List.textForeground"));
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean hasFocus) {
setEnabled(list.isEnabled());
setSelected(((CheckableItem) value).isSelected());
setFont(list.getFont());
setText(value.toString());
return this;
}
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception evt) {}
CheckListExample2 frame = new CheckListExample2();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(300, 200);
frame.setVisible(true);
}
}
DND Drag and drop List
/**
* This is an example of a component, which serves as a DragSource as
* well as Drop Target.
* To illustrate the concept, JList has been used as a droppable target
* and a draggable source.
* Any component can be used instead of a JList.
* The code also contains debugging messages which can be used for
* diagnostics and understanding the flow of events.
*
* @version 1.0
*/
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.dnd.DragSourceDropEvent;
import java.awt.dnd.DragSourceEvent;
import java.awt.dnd.DragSourceListener;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.ListModel;
public class DNDList extends JList implements DropTargetListener, DragSourceListener, DragGestureListener
{
/**
* enables this component to be a dropTarget
*/
DropTarget dropTarget = null;
/**
* enables this component to be a Drag Source
*/
DragSource dragSource = null;
/**
* constructor - initializes the DropTarget and DragSource.
*/
public DNDList( ListModel dataModel )
{
super( dataModel );
dropTarget = new DropTarget( this, this );
dragSource = new DragSource();
dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_MOVE, this );
}
/**
* is invoked when you are dragging over the DropSite
*
*/
public void dragEnter( DropTargetDragEvent event )
{
// debug messages for diagnostics
System.out.println( "dragEnter" );
event.acceptDrag( DnDConstants.ACTION_MOVE );
}
/**
* is invoked when you are exit the DropSite without dropping
*
*/
public void dragExit( DropTargetEvent event )
{
System.out.println( "dragExit" );
}
/**
* is invoked when a drag operation is going on
*
*/
public void dragOver( DropTargetDragEvent event )
{
System.out.println( "dragOver" );
}
/**
* a drop has occurred
*
*/
public void drop( DropTargetDropEvent event )
{
try
{
Transferable transferable = event.getTransferable();
// we accept only Strings
if( transferable.isDataFlavorSupported( DataFlavor.stringFlavor ) )
{
event.acceptDrop( DnDConstants.ACTION_MOVE );
String s = ( String )transferable.getTransferData( DataFlavor.stringFlavor );
addElement( s );
event.getDropTargetContext().dropComplete( true );
}
else
{
event.rejectDrop();
}
}
catch( Exception exception )
{
System.err.println( "Exception" + exception.getMessage() );
event.rejectDrop();
}
}
/**
* is invoked if the use modifies the current drop gesture
*
*/
public void dropActionChanged( DropTargetDragEvent event )
{
}
/**
* a drag gesture has been initiated
*
*/
public void dragGestureRecognized( DragGestureEvent event )
{
Object selected = getSelectedValue();
if( selected != null )
{
StringSelection text = new StringSelection( selected.toString() );
// as the name suggests, starts the dragging
dragSource.startDrag( event, DragSource.DefaultMoveDrop, text, this );
}
else
{
System.out.println( "nothing was selected" );
}
}
/**
* this message goes to DragSourceListener, informing it that the dragging
* has ended
*
*/
public void dragDropEnd( DragSourceDropEvent event )
{
if( event.getDropSuccess() )
{
removeElement();
}
}
/**
* this message goes to DragSourceListener, informing it that the dragging
* has entered the DropSite
*
*/
public void dragEnter( DragSourceDragEvent event )
{
System.out.println( " dragEnter" );
}
/**
* this message goes to DragSourceListener, informing it that the dragging
* has exited the DropSite
*
*/
public void dragExit( DragSourceEvent event )
{
System.out.println( "dragExit" );
}
/**
* this message goes to DragSourceListener, informing it that the dragging is
* currently ocurring over the DropSite
*
*/
public void dragOver( DragSourceDragEvent event )
{
System.out.println( "dragExit" );
}
/**
* is invoked when the user changes the dropAction
*
*/
public void dropActionChanged( DragSourceDragEvent event )
{
System.out.println( "dropActionChanged" );
}
/**
* adds elements to itself
*
*/
public void addElement( Object s )
{
( ( DefaultListModel )getModel() ).addElement( s.toString() );
}
/**
* removes an element from itself
*/
public void removeElement()
{
( ( DefaultListModel )getModel() ).removeElement( getSelectedValue() );
}
}
Editable List Example
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html
/*
* (swing1.1)
*/
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
/**
* @version 1.0 12/24/98
*/
public class EditableListExample extends JFrame {
public EditableListExample() {
super("Editable List Example");
String[] data = { "a", "b", "c", "d", "e", "f", "g" };
JList list = new JList(data);
JScrollPane scrollList = new JScrollPane(list);
scrollList.setMinimumSize(new Dimension(100, 80));
Box listBox = new Box(BoxLayout.Y_AXIS);
listBox.add(scrollList);
listBox.add(new JLabel("JList"));
DefaultTableModel dm = new DefaultTableModel();
Vector dummyHeader = new Vector();
dummyHeader.addElement("");
dm.setDataVector(strArray2Vector(data), dummyHeader);
JTable table = new JTable(dm);
table.setShowGrid(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollTable = new JScrollPane(table);
scrollTable.setColumnHeader(null);
scrollTable.setMinimumSize(new Dimension(100, 80));
Box tableBox = new Box(BoxLayout.Y_AXIS);
tableBox.add(scrollTable);
tableBox.add(new JLabel("JTable"));
Container c = getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.X_AXIS));
c.add(listBox);
c.add(new JSeparator(SwingConstants.VERTICAL));
//c.add(new JLabel("test"));
//c.add(new JSeparator(SwingConstants.HORIZONTAL));
c.add(tableBox);
setSize(220, 130);
setVisible(true);
}
private Vector strArray2Vector(String[] str) {
Vector vector = new Vector();
for (int i = 0; i < str.length; i++) {
Vector v = new Vector();
v.addElement(str[i]);
vector.addElement(v);
}
return vector;
}
public static void main(String[] args) {
final EditableListExample frame = new EditableListExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
Mouse Roll over List
ToolTip List Example
// Example from http://www.crionics.ru/products/opensource/faq/swing_ex/SwingExamples.html
//File:ToolTipListExample.java
/* (swing1.1.1) */
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
/**
* @version 1.0 08/26/99
*/
public class ToolTipListExample extends JFrame {
public ToolTipListExample() {
super("ToolTip Example");
String[][] strs = { { "Acinonyx jutatus", "Cheetah" },
{ "Panthera leo", "Lion" }, { "Canis lupus", "Wolf" },
{ "Lycaon pictus", "Llycaon" }, { "Vulpes Vulpes", "Fox" } };
JList list = new JList(createItems(strs)) {
public String getToolTipText(MouseEvent e) {
int index = locationToIndex(e.getPoint());
if (-1 < index) {
ToolTipItem item = (ToolTipItem) getModel().getElementAt(
index);
return item.getToolTipText();
} else {
//return super.getToolTipText();
return null;
}
}
};
list.setToolTipText("");
getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);
}
Object[] createItems(String[][] strs) {
ToolTipItem[] items = new ToolTipItem[strs.length];
for (int i = 0; i < strs.length; i++) {
items[i] = new ToolTipItem(strs[i][0], strs[i][1]);
}
return items;
}
class ToolTipItem {
String obj;
String toolTipText;
public ToolTipItem(String obj, String text) {
this.obj = obj;
this.toolTipText = text;
}
public String getToolTipText() {
return toolTipText;
}
public String toString() {
return obj;
}
}
public static void main(String args[]) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception evt) {}
ToolTipListExample frame = new ToolTipListExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(140, 150);
frame.setVisible(true);
}
}