我用以下方法将编译好的Java 类文件进行打包 有一个小模块不能运行 怎样解决?????
编译好JAVA文件后:(假设是A.class,B.class)
首先你要写一个清单文件example.mf
Manifest-Version: 1.0
Main-Class: A
Created-By: 1.2.2(Sun Microsystems Inc.):
注意冒号后的空格,不可少。
在CLASS目录下运行:jar cfm example.jar example.mf A.class B.class
运行后就有一个JAR文件生成,可以直接打开了
如果还不够方便就写个批处理文件example.bat
javaw -jar example.jar
运行后你会发现有个DOS窗口会启动,如果你想让它在启动后自动关闭可以这样写:
start javaw -jar example.jar//这一模块代码如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.table.*;
import java.util.Vector;public class BookList extends JFrame implements ActionListener {
DataBaseManager db = new DataBaseManager();
ResultSet rs;
Container c;
JPanel panel1, panel2, panel3;
JLabel BookNameLabel, WriterLabel, PriceLabel;
JTextField BookNameTextField, WriterTextField, PriceTextField;
JButton SearchBtn, ExitBtn;
JTable table;
DefaultTableModel defaultModel = null;/*
* 这是 TableModel 的一个实现,它使用一个 Vector
* 来存储单元格的值对象, 该 Vector 由多个 Vector
* 组成。
*/ public BookList() {
super("图书资料信息一览");
c = getContentPane();
c.setLayout(new BorderLayout());
BookNameLabel = new JLabel("图书名称", JLabel.CENTER);
BookNameLabel.setFont(new java.awt.Font("Dialog", 1, 15));
WriterLabel = new JLabel("作者", JLabel.CENTER);
WriterLabel.setFont(new java.awt.Font("Dialog", 1, 15));
PriceLabel = new JLabel("单价", JLabel.CENTER);
PriceLabel.setFont(new java.awt.Font("Dialog", 1, 15));
BookNameTextField = new JTextField(15);
BookNameTextField.setFont(new java.awt.Font("Dialog", 1, 15));
WriterTextField = new JTextField(15);
WriterTextField.setFont(new java.awt.Font("Dialog", 1, 15));
PriceTextField = new JTextField(15);
PriceTextField.setFont(new java.awt.Font("Dialog", 1, 15));
SearchBtn = new JButton("搜索");
SearchBtn.setFont(new java.awt.Font("Dialog", 1, 15));
ExitBtn = new JButton("退出");
ExitBtn.setFont(new java.awt.Font("Dialog", 1, 15));
SearchBtn.addActionListener(this);
ExitBtn.addActionListener(this);
panel1 = new JPanel();
// panel1.setLayout(new GridLayout(2,2));
panel1.add(BookNameLabel);
panel1.add(BookNameTextField);
panel1.add(WriterLabel);
panel1.add(WriterTextField);
panel2 = new JPanel();
panel2.add(PriceLabel);
panel2.add(PriceTextField);
panel2.add(SearchBtn);
panel2.add(ExitBtn);
String[] name = { "图书编码", "书名", "作者", "出版社", "出版日期", "单价","购入时间","借否" };
String[][] data = new String[0][0];
defaultModel = new DefaultTableModel(data, name);/*
* public
* DefaultTableModel(Object[][]
* data,Object[]
* columnNames) 构造
* DefaultTableModel,并通过将
* data 和
* columnNames 传递到
* setDataVector
* 方法来初始化该表。
* Object[][]
* 数组中的第一个索引是行索引,第二个索引是列索引。
*/
table = new JTable(defaultModel);/*
* public JTable(TableModel dm)构造
* JTable, 使用 dm
* 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。
*/
table.setPreferredScrollableViewportSize(new Dimension(800, 400));// 设置此表视口的首选大小。
table.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
JScrollPane s = new JScrollPane(table);/*
* 提供轻量级组件的 scrollable 视图。
* JScrollPane
* 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。
*/
panel3 = new JPanel();
panel3.add(s);
c.add(panel1, BorderLayout.NORTH);
c.add(panel2, BorderLayout.CENTER);
c.add(panel3, BorderLayout.SOUTH);
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == ExitBtn) {
db.closeConnection();
this.dispose();
} else if (e.getSource() == SearchBtn) {
// String strSQL = "select
// CarName,Maker,Address,madeDate,three_month_price,moretime_month_price,Com
// from cars";
String strsql = null;
if (BookNameTextField.getText().trim().equals("")
&& PriceTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) {
strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books ";
} else if (BookNameTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Price like '%"
+ PriceTextField.getText().trim() + "%'";
} else if (BookNameTextField.getText().trim().equals("")
&& PriceTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Writer like '%"
+ WriterTextField.getText().trim() + "%'";
} else if (PriceTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like '%"
+ BookNameTextField.getText().trim() + "%'";
} else if (BookNameTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Writer like'%"
+ WriterTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
} else if (WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
} else if (PriceTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Writer like'%"
+ WriterTextField.getText().trim()
+ "%'";
} else { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Writer like'%"
+ WriterTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
}
try {
// 首先删除table中的数据
int rowCount = defaultModel.getRowCount() - 1;// 取得table中的数据行
int j = rowCount;
for (int i = 0; i <= rowCount; i++) {
defaultModel.removeRow(j);// 删除rowCount行的数据;
defaultModel.setRowCount(j);// 重新设置行数;
j = j - 1;
}
rs = db.getResult(strsql); while (rs.next()) {
Vector v = new Vector();
v.addElement(rs.getString(1));
v.addElement(rs.getString(2));
v.addElement(rs.getString(3));
v.addElement(rs.getString(4));
v.addElement(rs.getString(5));
v.addElement(rs.getString(6));
v.addElement(rs.getString(7));
v.addElement(rs.getString(8));
//v.addElement(rs.getString(9));
defaultModel.addRow(v);
}
table.revalidate();// revalidate()支持推迟的自动布局。
table.setFont(new java.awt.Font("Dialog", 1, 15));
} catch (SQLException sql) {
System.out.println(sql.toString());
} catch (Exception ex) {
ex.toString();//
}
} }}
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
public TableCellTextAreaRenderer() {
setLineWrap(true);//设置文本区的换行策略。
setWrapStyleWord(true);//设置换行方式
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// 计算当下行的最佳高度
int maxPreferredHeight = 0;
for (int i = 0; i < table.getColumnCount(); i++) {
setText("" + table.getValueAt(row, i));
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
} if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
table.setRowHeight(row, maxPreferredHeight); setText(value == null ? "" : value.toString());
return this;
}
}
编译好JAVA文件后:(假设是A.class,B.class)
首先你要写一个清单文件example.mf
Manifest-Version: 1.0
Main-Class: A
Created-By: 1.2.2(Sun Microsystems Inc.):
注意冒号后的空格,不可少。
在CLASS目录下运行:jar cfm example.jar example.mf A.class B.class
运行后就有一个JAR文件生成,可以直接打开了
如果还不够方便就写个批处理文件example.bat
javaw -jar example.jar
运行后你会发现有个DOS窗口会启动,如果你想让它在启动后自动关闭可以这样写:
start javaw -jar example.jar//这一模块代码如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.table.*;
import java.util.Vector;public class BookList extends JFrame implements ActionListener {
DataBaseManager db = new DataBaseManager();
ResultSet rs;
Container c;
JPanel panel1, panel2, panel3;
JLabel BookNameLabel, WriterLabel, PriceLabel;
JTextField BookNameTextField, WriterTextField, PriceTextField;
JButton SearchBtn, ExitBtn;
JTable table;
DefaultTableModel defaultModel = null;/*
* 这是 TableModel 的一个实现,它使用一个 Vector
* 来存储单元格的值对象, 该 Vector 由多个 Vector
* 组成。
*/ public BookList() {
super("图书资料信息一览");
c = getContentPane();
c.setLayout(new BorderLayout());
BookNameLabel = new JLabel("图书名称", JLabel.CENTER);
BookNameLabel.setFont(new java.awt.Font("Dialog", 1, 15));
WriterLabel = new JLabel("作者", JLabel.CENTER);
WriterLabel.setFont(new java.awt.Font("Dialog", 1, 15));
PriceLabel = new JLabel("单价", JLabel.CENTER);
PriceLabel.setFont(new java.awt.Font("Dialog", 1, 15));
BookNameTextField = new JTextField(15);
BookNameTextField.setFont(new java.awt.Font("Dialog", 1, 15));
WriterTextField = new JTextField(15);
WriterTextField.setFont(new java.awt.Font("Dialog", 1, 15));
PriceTextField = new JTextField(15);
PriceTextField.setFont(new java.awt.Font("Dialog", 1, 15));
SearchBtn = new JButton("搜索");
SearchBtn.setFont(new java.awt.Font("Dialog", 1, 15));
ExitBtn = new JButton("退出");
ExitBtn.setFont(new java.awt.Font("Dialog", 1, 15));
SearchBtn.addActionListener(this);
ExitBtn.addActionListener(this);
panel1 = new JPanel();
// panel1.setLayout(new GridLayout(2,2));
panel1.add(BookNameLabel);
panel1.add(BookNameTextField);
panel1.add(WriterLabel);
panel1.add(WriterTextField);
panel2 = new JPanel();
panel2.add(PriceLabel);
panel2.add(PriceTextField);
panel2.add(SearchBtn);
panel2.add(ExitBtn);
String[] name = { "图书编码", "书名", "作者", "出版社", "出版日期", "单价","购入时间","借否" };
String[][] data = new String[0][0];
defaultModel = new DefaultTableModel(data, name);/*
* public
* DefaultTableModel(Object[][]
* data,Object[]
* columnNames) 构造
* DefaultTableModel,并通过将
* data 和
* columnNames 传递到
* setDataVector
* 方法来初始化该表。
* Object[][]
* 数组中的第一个索引是行索引,第二个索引是列索引。
*/
table = new JTable(defaultModel);/*
* public JTable(TableModel dm)构造
* JTable, 使用 dm
* 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。
*/
table.setPreferredScrollableViewportSize(new Dimension(800, 400));// 设置此表视口的首选大小。
table.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
JScrollPane s = new JScrollPane(table);/*
* 提供轻量级组件的 scrollable 视图。
* JScrollPane
* 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。
*/
panel3 = new JPanel();
panel3.add(s);
c.add(panel1, BorderLayout.NORTH);
c.add(panel2, BorderLayout.CENTER);
c.add(panel3, BorderLayout.SOUTH);
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == ExitBtn) {
db.closeConnection();
this.dispose();
} else if (e.getSource() == SearchBtn) {
// String strSQL = "select
// CarName,Maker,Address,madeDate,three_month_price,moretime_month_price,Com
// from cars";
String strsql = null;
if (BookNameTextField.getText().trim().equals("")
&& PriceTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) {
strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books ";
} else if (BookNameTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Price like '%"
+ PriceTextField.getText().trim() + "%'";
} else if (BookNameTextField.getText().trim().equals("")
&& PriceTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Writer like '%"
+ WriterTextField.getText().trim() + "%'";
} else if (PriceTextField.getText().trim().equals("")
&& WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like '%"
+ BookNameTextField.getText().trim() + "%'";
} else if (BookNameTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where Writer like'%"
+ WriterTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
} else if (WriterTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
} else if (PriceTextField.getText().trim().equals("")) { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Writer like'%"
+ WriterTextField.getText().trim()
+ "%'";
} else { strsql = "select Number,BookName,Writer,Press,Published,Price,BuyDate,Com from Books where BookName like'%"
+ BookNameTextField.getText().trim()
+ "%'and Writer like'%"
+ WriterTextField.getText().trim()
+ "%'and Price like'%"
+ PriceTextField.getText().trim()
+ "%'";
}
try {
// 首先删除table中的数据
int rowCount = defaultModel.getRowCount() - 1;// 取得table中的数据行
int j = rowCount;
for (int i = 0; i <= rowCount; i++) {
defaultModel.removeRow(j);// 删除rowCount行的数据;
defaultModel.setRowCount(j);// 重新设置行数;
j = j - 1;
}
rs = db.getResult(strsql); while (rs.next()) {
Vector v = new Vector();
v.addElement(rs.getString(1));
v.addElement(rs.getString(2));
v.addElement(rs.getString(3));
v.addElement(rs.getString(4));
v.addElement(rs.getString(5));
v.addElement(rs.getString(6));
v.addElement(rs.getString(7));
v.addElement(rs.getString(8));
//v.addElement(rs.getString(9));
defaultModel.addRow(v);
}
table.revalidate();// revalidate()支持推迟的自动布局。
table.setFont(new java.awt.Font("Dialog", 1, 15));
} catch (SQLException sql) {
System.out.println(sql.toString());
} catch (Exception ex) {
ex.toString();//
}
} }}
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
public TableCellTextAreaRenderer() {
setLineWrap(true);//设置文本区的换行策略。
setWrapStyleWord(true);//设置换行方式
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// 计算当下行的最佳高度
int maxPreferredHeight = 0;
for (int i = 0; i < table.getColumnCount(); i++) {
setText("" + table.getValueAt(row, i));
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
} if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
table.setRowHeight(row, maxPreferredHeight); setText(value == null ? "" : value.toString());
return this;
}
}
1楼的大哥,可是我用 javac 、java 运行主程序MainWindow 这一模块都能正常运行,打了Jar包单单这一模块点击 没反应,控制台也没错误提示,主程序也正常运行
能不能具体描述下
比如,你的代码中有new BookList这个对象
之后setVisible(true)没反应?
BookList BookListFrame=new BookList();
Dimension FrameSize = BookListFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookListFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookListFrame.pack();
BookListFrame.setVisible(true);
//BookListFrame.setResizable(false);
}
用javac、java命令行 运行程序没有任何问题我用上面那种方法打了Jar包以后,“BookListFrame.setVisible(true)”就不起作用了
框架如下:
没有反应的模块在标题上
import java.awt.*;//包含用于创建用户界面和绘制图形图像的所有类
import java.awt.event.*;
import javax.swing.*;
public class MainWindow extends JFrame implements ActionListener{
JPanel panel1;
Container c;
JMenuBar MenuB;//菜单栏的实现
JLabel name=new JLabel();
JMenu SystemMenu,BookMGRMenu,BorrowBookMenu,ReturnBookMenu,
InfoBrowseMenu,UserMGRMenu;
JMenuItem UserLoginMenuItem,UserAddMenuItem,UserDeleteMenuItem,
ExitMenuItem,BookAddMenuItem,BookDeleteMenuItem,
BorrowBookMenuItem,BorrowInfoMenuItem,ReturnBookMenuItem,ReturnInfoMenuItem,BookListMenuItem,
BorrowBookListMenuItem,UserListMenuItem,HistoryMenuItem;
JLabel titleLabel,AuthorLabel,DateLabel;
public MainWindow(){
super("图书资料管理系统");
//Font font1 = new Font("楷体_gb2312",Font.BOLD+Font.ITALIC,50);
//系统管理菜单
MenuB = new JMenuBar();
SystemMenu =new JMenu("系统管理");
SystemMenu.setFont(new java.awt.Font("Dialog", 1, 25));
UserMGRMenu = new JMenu("用户管理");
UserMGRMenu.setFont(new java.awt.Font("Dialog", 1, 18));
UserLoginMenuItem = new JMenuItem("用户登录");
UserLoginMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
UserAddMenuItem = new JMenuItem("添加用户");
UserAddMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
UserDeleteMenuItem = new JMenuItem("删除用户");
UserDeleteMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
ExitMenuItem = new JMenuItem("退出");
ExitMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
SystemMenu.add(UserLoginMenuItem);
UserMGRMenu.add(UserAddMenuItem);
UserMGRMenu.add(UserDeleteMenuItem);
SystemMenu.add(UserMGRMenu);
SystemMenu.addSeparator();//将新分隔符追加到菜单的末尾
SystemMenu.add(ExitMenuItem);
UserLoginMenuItem.addActionListener(this);
UserAddMenuItem.addActionListener(this);
UserDeleteMenuItem.addActionListener(this);
ExitMenuItem.addActionListener(this);
MenuB.add(SystemMenu);
// 书库管理菜单
BookMGRMenu = new JMenu("书库管理");
BookMGRMenu.setFont(new java.awt.Font("Dialog", 1, 25));
BookAddMenuItem = new JMenuItem("添加图书");
BookAddMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
BookDeleteMenuItem = new JMenuItem("删除图书");
BookDeleteMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
BookMGRMenu.add(BookAddMenuItem);
BookMGRMenu.add(BookDeleteMenuItem);
BookAddMenuItem.addActionListener(this);
//BookModifyMenuItem.addActionListener(this);
BookDeleteMenuItem.addActionListener(this);
MenuB.add(BookMGRMenu);
// 借书管理菜单
BorrowBookMenu = new JMenu("借书管理");
BorrowBookMenu.setFont(new java.awt.Font("Dialog", 1, 25));
BorrowBookMenuItem = new JMenuItem("图书出借");
BorrowBookMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
BorrowBookMenuItem.addActionListener(this);
BorrowBookListMenuItem = new JMenuItem("借阅信息");
BorrowBookListMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
BorrowBookListMenuItem.addActionListener(this);
BorrowBookMenu.add(BorrowBookMenuItem);
BorrowBookMenu.add(BorrowBookListMenuItem);
MenuB.add(BorrowBookMenu);
ReturnBookMenu = new JMenu("还书管理");
ReturnBookMenu.setFont(new java.awt.Font("Dialog", 1, 25));
ReturnBookMenuItem = new JMenuItem("图书归还");
ReturnBookMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
ReturnBookMenuItem.addActionListener(this);
ReturnBookMenu.add(ReturnBookMenuItem);
MenuB.add(ReturnBookMenu);
//书库存储
InfoBrowseMenu= new JMenu("书库信息");
InfoBrowseMenu.setFont(new java.awt.Font("Dialog", 1, 25));
BookListMenuItem=new JMenuItem("书库存储信息查询");
BookListMenuItem.setFont(new java.awt.Font("Dialog", 1, 18));
BookListMenuItem.addActionListener(this);
InfoBrowseMenu.add(BookListMenuItem);
MenuB.add(InfoBrowseMenu);
// ****************************************
setJMenuBar(MenuB);//设置此窗体的菜单栏
titleLabel = new JLabel(new ImageIcon(".\\3.gif"));//背景
c = getContentPane();
c.setLayout(new BorderLayout());
panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
panel1.add(titleLabel, BorderLayout.CENTER);
c.add(panel1, BorderLayout.CENTER);
name.setForeground(Color.orange);
name.setText("请先登陆");
name.setFont(new java.awt.Font("Dialog", 1, 18));
c.add(name, BorderLayout.NORTH);
setBounds(160, 100, 600, 400);//(X,Y,Width,Height)
setVisible(true);
setResizable(false);
// 设置初始功能
UserMGRMenu.setEnabled(false);
BookMGRMenu.setEnabled(false);
BorrowBookMenu.setEnabled(false);
ReturnBookMenu.setEnabled(false);
InfoBrowseMenu.setEnabled(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "用户登录") {
UserLogin UserLoginFrame = new UserLogin(this);
Dimension FrameSize = UserLoginFrame.getPreferredSize();
Dimension MainFrameSize = getSize();// Dimension
// 类封装单个对象中组件的宽度和高度(精确到整数)。
Point loc = getLocation();// 表示 (x, y) 坐标空间中的位置的点,以整数精度来指定。
UserLoginFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
UserLoginFrame.pack();
//UserLoginFrame.setBounds(200, 200, 300, 130);
UserLoginFrame.setVisible(true);
UserLoginFrame.setResizable(false); }else if (e.getActionCommand() == "添加用户") {
UserAdd UserAddFrame = new UserAdd();
Dimension FrameSize = UserAddFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
UserAddFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
UserAddFrame.pack();
UserAddFrame.setBounds(200, 200, 330, 210);
UserAddFrame.setVisible(true);
UserAddFrame.setResizable(false);
} else if (e.getActionCommand() == "退出") {
this.dispose();
System.exit(0);
}else if (e.getActionCommand() == "删除用户") {
UserDelete UserDeleteFrame = new UserDelete();
Dimension FrameSize = UserDeleteFrame.getPreferredSize();// getPreferredSize()获得组件的首选大小。
Dimension MainFrameSize = getSize();// Dimension类封装单个对象中组件的宽度和高度(精确到整数)。
Point loc = getLocation();
UserDeleteFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
UserDeleteFrame.pack();
UserDeleteFrame.setBounds(200, 200, 330, 150);
UserDeleteFrame.setVisible(true);
UserDeleteFrame.setResizable(false);
}else if(e.getActionCommand() == "添加图书"){
BookAdd BookAddFrame = new BookAdd();
Dimension FrameSize = BookAddFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookAddFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookAddFrame.pack();
//BookAddFrame.setBounds(200, 200, 380, 300);
BookAddFrame.setVisible(true);
BookAddFrame.setResizable(false);
}else if(e.getActionCommand() == "删除图书"){
BookDel BookDelFrame=new BookDel();
Dimension FrameSize = BookDelFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookDelFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookDelFrame.pack();
BookDelFrame.setBounds(200, 200, 300, 150);
BookDelFrame.setVisible(true);
BookDelFrame.setResizable(false);
}else if(e.getActionCommand() == "图书出借"){
BorrowBook BorrowBookFrame=new BorrowBook();
Dimension FrameSize = BorrowBookFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BorrowBookFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BorrowBookFrame.pack();
BorrowBookFrame.setBounds(200, 200, 320, 230);
BorrowBookFrame.setVisible(true);
BorrowBookFrame.setResizable(false);
}else if(e.getActionCommand() == "借阅信息"){
BorrowList BorrowListFrame=new BorrowList();
Dimension FrameSize = BorrowListFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BorrowListFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BorrowListFrame.pack();
BorrowListFrame.setBounds(200, 200, 530, 250);
BorrowListFrame.setVisible(true);
//BorrowListFrame.setResizable(false);
}
else if(e.getActionCommand() == "图书归还"){
ReturnBook ReturnBookFrame=new ReturnBook();
Dimension FrameSize = ReturnBookFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
ReturnBookFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
ReturnBookFrame.pack();
ReturnBookFrame.setBounds(200, 200, 350, 180);
ReturnBookFrame.setVisible(true);
ReturnBookFrame.setResizable(false);
}
else if(e.getActionCommand() == "书库存储信息查询"){
BookList BookListFrame=new BookList();
Dimension FrameSize = BookListFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookListFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookListFrame.pack();
BookListFrame.setVisible(true);
//BookListFrame.setResizable(false);
}
} // 设置登录用户的权限
public void setEnable(String powerType) {
if (powerType.trim().equals("系统管理员")) {
UserMGRMenu.setEnabled(true);
BookMGRMenu.setEnabled(true);
BorrowBookMenu.setEnabled(true);
ReturnBookMenu.setEnabled(true);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(true);
//HistoryMenuItem.setEnabled(true);
name.setText(powerType.trim());
} else if (powerType.trim().equals("书库管理员")) { name.setText(powerType.trim());
UserMGRMenu.setEnabled(false);
BookMGRMenu.setEnabled(true);
BorrowBookMenu.setEnabled(false);
ReturnBookMenu.setEnabled(false);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(false);
//HistoryMenuItem.setEnabled(false);
} else if (powerType.trim().equals("图书管理员")) { name.setText(powerType.trim());
UserMGRMenu.setEnabled(false);
BookMGRMenu.setEnabled(false);
BorrowBookMenu.setEnabled(true);
ReturnBookMenu.setEnabled(true);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(false);
//HistoryMenuItem.setEnabled(false);
} } public static void main(String[] args) {
MainWindow mainframe = new MainWindow();
}
}
(mail:[email protected])
// 设置登录用户的权限
public void setEnable(String powerType) {
if (powerType.trim().equals("系统管理")) {
UserMGRMenu.setEnabled(true);
BookMGRMenu.setEnabled(true);
BorrowBookMenu.setEnabled(true);
ReturnBookMenu.setEnabled(true);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(true);
//HistoryMenuItem.setEnabled(true);
name.setText(powerType.trim());
} else if (powerType.trim().equals("书库管理")) {name.setText(powerType.trim());
UserMGRMenu.setEnabled(false);
BookMGRMenu.setEnabled(true);
BorrowBookMenu.setEnabled(false);
ReturnBookMenu.setEnabled(false);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(false);
//HistoryMenuItem.setEnabled(false);
} else if (powerType.trim().equals("图书管理")) {name.setText(powerType.trim());
UserMGRMenu.setEnabled(false);
BookMGRMenu.setEnabled(false);
BorrowBookMenu.setEnabled(true);
ReturnBookMenu.setEnabled(true);
InfoBrowseMenu.setEnabled(true);
//UserListMenuItem.setEnabled(false);
//HistoryMenuItem.setEnabled(false);
}
此处你只是用setEnabled是不能实现功能的,如果你要弹出frame就要像你第一个写的那样
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand() == "书库存储信息查询"){
BookList BookListFrame=new BookList();
Dimension FrameSize = BookListFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookListFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookListFrame.pack();
BookListFrame.setVisible(true);
//BookListFrame.setResizable(false);
}
如果你是想设置点选menuitem弹出frame就要给你的menuitem添加actionenvent事件,然后再事件中照着如上写的代码编辑。
如果找你这么写,只有“书库存储信息查询”这一选项可以运行
我现在的情况就是“书库存储信息查询”这一选项打了Jar包后(运行example.jar)不能运行(我已经发过去了)但是用命令行 javac、java命令这一选项就可以运行,是不是example.mf这个文件写错了?
if(e.getActionCommand() == "书库存储信息查询"){
BookList BookListFrame=new BookList();
Dimension FrameSize = BookListFrame.getPreferredSize();
Dimension MainFrameSize = getSize();
Point loc = getLocation();
BookListFrame.setLocation((MainFrameSize.width - FrameSize.width)
/ 2 + loc.x, (MainFrameSize.height - FrameSize.height) / 2
+ loc.y);
BookListFrame.pack();
BookListFrame.setVisible(true);
//BookListFrame.setResizable(false);
}将我标示的地方改为 BookListFrame=new BookList();,然后再MainWindow这个主类的成员变量声明中先声明,BookList BookListFrame;就可以再jar包中显示这一项了。这主要是组件重绘问题,我在此就不详细介绍了,只要记住最好不要在局部方法中声明组件就行。
BookList BookListFrame;
...else if(e.getActionCommand() == "书库存储信息查询"){
BookListFrame=new BookList();
//BookList BookListFrame=new BookList();
是不是在标注的地方声明呢,我按照你的意思改了,但还是没有反应,能不能把你改的给我发回一份?