紧急求助,在线等!(公司项目) java 的GUI里如何实现 滑动面板,折叠面板或层的效果(像QQ一样的布局)

小龙王2010 2010-01-08 03:54:27
请问,怎样手工编程实现:java 的GUI里如何实现 滑动面板,那种垂直折叠面板或层的效果(像QQ一样的布局)
小弟在完成公司项目时遇难题,急需要知道这方面的组件或代码 请指点!!!
在线等
...全文
416 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
SambaGao 2010-01-14
  • 打赏
  • 举报
回复
netbean s
tuerqizhou 2010-01-13
  • 打赏
  • 举报
回复
很久以前我就想做这样的效果了

可惜一直没有实现

不过我有个思路


在一个面版中加入你要的各个组件
对他们逐个监听,根据不同的要求设置不同的位置
设置布局为空~~~
py330316117 2010-01-13
  • 打赏
  • 举报
回复
还真是麻烦。。。。lz会了总结下,大家一起学习学习
huntor 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhaoxiatengkong_1 的回复:]
怎么提示找不到软件包:import net.miginfocom.swing.MigLayout;

这个在java类库中有吗???  怎么解决???
[/Quote]
从这个连接下载
http://www.migcalendar.com/miglayout/versions/3.7.2/
小龙王2010 2010-01-13
  • 打赏
  • 举报
回复
怎么提示找不到软件包:import net.miginfocom.swing.MigLayout;

这个在java类库中有吗??? 怎么解决???
py330316117 2010-01-12
  • 打赏
  • 举报
回复
我估计是把不同的布局综合在一起用,单一的布局是不能实现这个功能的。
我还有个疑问,层一般是网页中用到的术语,如果你是编网页,没必要用全java,可以用dreamveawer来实现层,在层中插入applet等java程序也未尝不可
huntor 2010-01-12
  • 打赏
  • 举报
回复
MigLayout 布局管理器支持将某个部件隐藏.
Example Code:
import net.miginfocom.swing.MigLayout;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* @author Skjalg Bjorndal
*/
public class MigFrame extends JFrame {

final JButton button1 = new JButton("Hello World");
final JButton button2 = new JButton("Hello There");
final JButton button3 = new JButton("Hello Again");
final JButton button4 = new JButton("Hello 4 U");


public MigFrame(boolean hideButton4) {
setPreferredSize(new Dimension(600, 400));
initGUI(hideButton4);
}

private void initGUI(boolean hideButton4) {
JPanel panel = new JPanel(new MigLayout("fill, hidemode 3, nocache, debug"));
getContentPane().add(panel);
panel.add(createButtonPanel(), "dock south");
panel.add(button1, "dock west, growx");
panel.add(button2, "dock west");
JPanel panelClient = new JPanel(new MigLayout("flowy, fill"));
panelClient.add(button3, "dock north, growy");
if (!hideButton4) {
panelClient.add(button4, "growy, dock south");
setLocation(620, 200);
} else {
setLocation(10, 200);
}
panel.add(panelClient, "dock west, growx");

pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

JPanel createButtonPanel() {
JPanel panel = new JPanel(new MigLayout());
JToggleButton hideButton = new JToggleButton("Hide");
hideButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button1.setVisible(!button1.isVisible());
button4.setVisible(!button4.isVisible());
getContentPane().validate();
}
});
panel.add(hideButton);
return panel;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final MigFrame fm = new MigFrame(true);
fm.setVisible(true);
final MigFrame fm2 = new MigFrame(false);
fm2.setVisible(true);
}
});
}
}
wallier 2010-01-11
  • 打赏
  • 举报
回复
帮顶吧
小龙王2010 2010-01-11
  • 打赏
  • 举报
回复
难道真的没人用JAVA做过这个类似折叠式的面板??? 请高人指点!!! 急需帮助, 项目要到期了, 在线等!!!!!!!!!
小龙王2010 2010-01-10
  • 打赏
  • 举报
回复
还是没能解决我想要的啊??????????????
365810247 2010-01-08
  • 打赏
  • 举报
回复
http://www.open-open.com/open92161.htm
365810247 2010-01-08
  • 打赏
  • 举报
回复


http://www.open-open.com/open92161.htm
看一下这个吧!

小龙王2010 2010-01-08
  • 打赏
  • 举报
回复
谢谢 各位的帮助 我想要实现的是想 VS2008 那个IDE里当要编程GUI时,要用到的工具箱差不多功能的折叠式面板,就是, 我点击一下就把这工具箱的整个面板给隐藏了,再次点击,则又弹了出来 急切得到高人的帮助, 在线等!!!!!!!
qq77504166 2010-01-08
  • 打赏
  • 举报
回复
这个需求有点离谱,是很幻想的客户提的吧
feitian124 2010-01-08
  • 打赏
  • 举报
回复
什么gui?
b/s的话用JavaScript+css好做,Google “js tab”很多,也有JavaScript框架有现成的。
c/s的话用swing咯
windforcecn 2010-01-08
  • 打赏
  • 举报
回复
是不是看起来这个样子?


package test;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class TestDrawer extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;

public JButton btn1 = new JButton("TestBTN1");

public JButton btn2 = new JButton("TestBTN2");

public JButton btn3 = new JButton("TestBTN3");

public JLabel lab1 = new JLabel("TestLab1");

public JLabel lab2 = new JLabel("TestLab2");

public JLabel lab3 = new JLabel("TestLab3");

public JPanel panel = new JPanel();

public int i = 1;

public TestDrawer() {
init();
}

private void init() {
this.setTitle("TestDrawer");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(getCenterPanel(), BorderLayout.CENTER);
this.pack();
this.setVisible(true);
}

private JPanel getCenterPanel() {
panel.setLayout(new GridLayout(3, 1));
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
return panel;
}

public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(btn1)) {
i++;
if (i % 2 == 0) {
panel.setLayout(new GridLayout(4, 1));
panel.removeAll();
panel.add(btn1);
panel.add(lab1);
panel.add(btn2);
panel.add(btn3);
} else {
panel.setLayout(new GridLayout(3, 1));
panel.removeAll();
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
}
panel.validate();
panel.repaint();
}
}

/**
* @param args
*/
public static void main(String[] args) {
new TestDrawer();
}
}

lubiao66 2010-01-08
  • 打赏
  • 举报
回复
<FRAME name=divline src="divline.htm" noResize scrolling=no>


divline.htm



<html>
<head>
<title>divline</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<STYLE type=text/css>.o1 {
FONT-SIZE: 10px; COLOR: #ffffff; BACKGROUND-COLOR: #718bd6; TEXT-DECORATION: none
}
BODY {
MARGIN: 0px; BACKGROUND-COLOR: #f6f6f6
}
</STYLE>

<SCRIPT language=javascript>
<!--
var iniCols, noCols, o_mf, o_ms, s;
function ini() {
o_mf = parent.document.getElementById("mainframe");
o_ms = document.getElementById("menuSwitch");
noCols = iniCols = o_mf.cols;
if ((pos = noCols.indexOf(",")) != -1) {
noCols = "0" + noCols.substring(pos);
}
s = false;
}
function changeLeft(){
s = !s;
o_mf.cols = s ? noCols : iniCols;
o_ms.innerHTML = s ? "►" : "◄";
}
//-->
</SCRIPT>

<BODY onload=ini() >
<TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" style="BORDER-RIGHT: #4096ee 1px solid;BORDER-TOP: #4096ee 1px solid; Z-INDEX: 1; LEFT: 10px; BORDER-LEFT: #4096ee 1px solid;WIDTH: 10px; BORDER-BOTTOM: #4096ee 1px solid;">
<TBODY>
<TR>
<TD><A class=o1 id=menuSwitch href="javascript:changeLeft();">◄</A>
</TD></TR></TBODY></TABLE></BODY></HTML>


楼主试试
小龙王2010 2010-01-08
  • 打赏
  • 举报
回复
好像不行吧, 我要的是从east 到west 的那种垂直折叠面板 就是点击一下就靠边隐藏 再次点击就又出现的那种 我现在是为编写一个应用程序而需要的这种折叠式菜单 由于以前没做过 ,所以 希望哪位最好能给个示例的代码
coveking 2010-01-08
  • 打赏
  • 举报
回复
用一种是JS实现的。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧