紧急求助,如何做到一个界面中×掉某个单元 用JSplitPane,点X的时候,设置那个JSplitPane的左右比例为0.0或1.0,分界线粗细为0我做过,不过没有在那角上做按钮,是放在菜单里控制的。布局选用BorderLayout就会自动填充。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 VC里实现方式是用ToolBar,但java的ToolBar没有关闭按钮的。 当然是在java里实现的,难道java就不能实现吗? 我上面说到用layout,下面是我刚才的实现,请看。************** Application3.java **************************package test;import javax.swing.UIManager;import java.awt.*;/** * <p>Title: close or open</p> * <p>Description: dekn</p> * <p>Copyright: Copyright (c) dekn 2003</p> * <p>Company: dekn</p> * @author dekn * @version 1.0 */public class Application3 { boolean packFrame = false; //Construct the application public Application3() { Frame3 frame = new Frame3(); //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) { frame.pack(); } else { frame.validate(); } //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } //Main method public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new Application3(); }}************** Application3.java **************************package test;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * <p>Title: close or open</p> * <p>Description: dekn</p> * <p>Copyright: Copyright (c) dekn 2003</p> * <p>Company: dekn</p> * @author dekn * @version 1.0 */public class Frame3 extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); BorderLayout borderLayout2 = new BorderLayout(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JPanel jPanel3 = new JPanel(); JPanel jPanel4 = new JPanel(); JPanel jPanel5 = new JPanel(); BorderLayout borderLayout3 = new BorderLayout(); JEditorPane jEditorPane1 = new JEditorPane(); BorderLayout borderLayout4 = new BorderLayout(); JButton jButton3 = new JButton(); BorderLayout borderLayout5 = new BorderLayout(); JTextArea jTextArea1 = new JTextArea(); //Construct the frame public Frame3() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(513, 379)); this.setTitle("Frame Title"); jPanel2.setLayout(borderLayout2); jButton1.setText("close"); jButton1.addActionListener(new Frame3_jButton1_actionAdapter(this)); jButton2.setText("open"); jButton2.addActionListener(new Frame3_jButton2_actionAdapter(this)); jPanel3.setPreferredSize(new Dimension(150, 10)); jPanel3.setLayout(borderLayout3); jPanel4.setPreferredSize(new Dimension(150, 10)); jPanel4.setLayout(borderLayout4); jEditorPane1.setBorder(BorderFactory.createLineBorder(Color.black)); jEditorPane1.setText("jEditorPane1"); jButton3.setText("jButton3"); jPanel5.setLayout(borderLayout5); jTextArea1.setBorder(BorderFactory.createLoweredBevelBorder()); jTextArea1.setText("jTextArea1"); contentPane.add(jPanel1, BorderLayout.NORTH); jPanel1.add(jButton1, null); jPanel1.add(jButton2, null); contentPane.add(jPanel2, BorderLayout.CENTER); jPanel2.add(jPanel3, BorderLayout.WEST); jPanel3.add(jEditorPane1, BorderLayout.CENTER); jPanel2.add(jPanel4, BorderLayout.EAST); jPanel4.add(jButton3, BorderLayout.CENTER); jPanel2.add(jPanel5, BorderLayout.CENTER); jPanel5.add(jTextArea1, BorderLayout.CENTER); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } /** * close方法 * @param e ActionEvent */ void jButton1_actionPerformed(ActionEvent e) { this.jPanel2.remove(this.jPanel4); this.jPanel2.repaint(); this.jPanel2.paintAll(this.jPanel2.getGraphics()); } /** * open方法 * @param e ActionEvent */ void jButton2_actionPerformed(ActionEvent e) { jPanel2.add(jPanel4, BorderLayout.EAST); this.jPanel2.repaint(); this.jPanel2.paintAll(this.jPanel2.getGraphics()); }}class Frame3_jButton1_actionAdapter implements java.awt.event.ActionListener { Frame3 adaptee; Frame3_jButton1_actionAdapter(Frame3 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); }}class Frame3_jButton2_actionAdapter implements java.awt.event.ActionListener { Frame3 adaptee; Frame3_jButton2_actionAdapter(Frame3 adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); }}上面的代码最重要的是: /** * close方法 * @param e ActionEvent */ void jButton1_actionPerformed(ActionEvent e) { this.jPanel2.remove(this.jPanel4); this.jPanel2.repaint(); this.jPanel2.paintAll(this.jPanel2.getGraphics()); } /** * open方法 * @param e ActionEvent */ void jButton2_actionPerformed(ActionEvent e) { jPanel2.add(jPanel4, BorderLayout.EAST); this.jPanel2.repaint(); this.jPanel2.paintAll(this.jPanel2.getGraphics()); }我是用borderlayout布局实现的,当然,如果您很熟悉其它布局的话,您也可以试着用其它布局实现,用布局来实现这种效果很简单,但一些场合,还是建议您用MDI。Dekn 2003-11-27 MDI?什么东西,windows+VC的概念(多文档) oh sorry,上面第二个文件的名称是: Frame3.java struts2标签问题,求教~ java applet求代码 用JTable显示数据库中的数据时总是异常报错 java中的传值与传reference 用接口定义的对象和类定的对象有何不同? 很简单的问题,不要笑 用java里的哪个类、函数能直接生成下面这个时间格式呢 2004-02-27T17:49:45Z 如何才能让我的代码看起来整齐有序? 怎么取得文件长度? visualage for java 3.0 有没有象VB,jb的哪种键入"。"后提示相关属性和方法的功能?如果有应如何设? 计算器 JAVA到底能做什么?感觉和C++比差远了。
import java.awt.*;/**
* <p>Title: close or open</p>
* <p>Description: dekn</p>
* <p>Copyright: Copyright (c) dekn 2003</p>
* <p>Company: dekn</p>
* @author dekn
* @version 1.0
*/public class Application3 {
boolean packFrame = false; //Construct the application
public Application3() {
Frame3 frame = new Frame3();
//Validate frames that have preset sizes
//Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
}
else {
frame.validate();
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
} //Main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new Application3();
}
}
************** Application3.java **************************package test;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;/**
* <p>Title: close or open</p>
* <p>Description: dekn</p>
* <p>Copyright: Copyright (c) dekn 2003</p>
* <p>Company: dekn</p>
* @author dekn
* @version 1.0
*/public class Frame3 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
JPanel jPanel5 = new JPanel();
BorderLayout borderLayout3 = new BorderLayout();
JEditorPane jEditorPane1 = new JEditorPane();
BorderLayout borderLayout4 = new BorderLayout();
JButton jButton3 = new JButton();
BorderLayout borderLayout5 = new BorderLayout();
JTextArea jTextArea1 = new JTextArea(); //Construct the frame
public Frame3() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(513, 379));
this.setTitle("Frame Title");
jPanel2.setLayout(borderLayout2);
jButton1.setText("close");
jButton1.addActionListener(new Frame3_jButton1_actionAdapter(this));
jButton2.setText("open");
jButton2.addActionListener(new Frame3_jButton2_actionAdapter(this));
jPanel3.setPreferredSize(new Dimension(150, 10));
jPanel3.setLayout(borderLayout3);
jPanel4.setPreferredSize(new Dimension(150, 10));
jPanel4.setLayout(borderLayout4);
jEditorPane1.setBorder(BorderFactory.createLineBorder(Color.black));
jEditorPane1.setText("jEditorPane1");
jButton3.setText("jButton3");
jPanel5.setLayout(borderLayout5);
jTextArea1.setBorder(BorderFactory.createLoweredBevelBorder());
jTextArea1.setText("jTextArea1");
contentPane.add(jPanel1, BorderLayout.NORTH);
jPanel1.add(jButton1, null);
jPanel1.add(jButton2, null);
contentPane.add(jPanel2, BorderLayout.CENTER);
jPanel2.add(jPanel3, BorderLayout.WEST);
jPanel3.add(jEditorPane1, BorderLayout.CENTER);
jPanel2.add(jPanel4, BorderLayout.EAST);
jPanel4.add(jButton3, BorderLayout.CENTER);
jPanel2.add(jPanel5, BorderLayout.CENTER);
jPanel5.add(jTextArea1, BorderLayout.CENTER);
} //Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
} /**
* close方法
* @param e ActionEvent
*/
void jButton1_actionPerformed(ActionEvent e) {
this.jPanel2.remove(this.jPanel4);
this.jPanel2.repaint();
this.jPanel2.paintAll(this.jPanel2.getGraphics());
} /**
* open方法
* @param e ActionEvent
*/
void jButton2_actionPerformed(ActionEvent e) {
jPanel2.add(jPanel4, BorderLayout.EAST);
this.jPanel2.repaint();
this.jPanel2.paintAll(this.jPanel2.getGraphics());
}
}class Frame3_jButton1_actionAdapter implements java.awt.event.ActionListener {
Frame3 adaptee; Frame3_jButton1_actionAdapter(Frame3 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}class Frame3_jButton2_actionAdapter implements java.awt.event.ActionListener {
Frame3 adaptee; Frame3_jButton2_actionAdapter(Frame3 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
上面的代码最重要的是: /**
* close方法
* @param e ActionEvent
*/
void jButton1_actionPerformed(ActionEvent e) {
this.jPanel2.remove(this.jPanel4);
this.jPanel2.repaint();
this.jPanel2.paintAll(this.jPanel2.getGraphics());
} /**
* open方法
* @param e ActionEvent
*/
void jButton2_actionPerformed(ActionEvent e) {
jPanel2.add(jPanel4, BorderLayout.EAST);
this.jPanel2.repaint();
this.jPanel2.paintAll(this.jPanel2.getGraphics());
}
我是用borderlayout布局实现的,当然,如果您很熟悉其它布局的话,您也可以试着用其它布局实现,用布局来实现这种效果很简单,但一些场合,还是建议您用MDI。
Dekn 2003-11-27