社区
Java SE
帖子详情
请问如何在JInternalFrame中添加一个JDialog
ukeychen
2007-08-05 11:48:51
如题,请高手帮帮忙!!!!!!!!!!!
...全文
187
6
打赏
收藏
请问如何在JInternalFrame中添加一个JDialog
如题,请高手帮帮忙!!!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ukeychen
2007-08-05
打赏
举报
回复
我自己搞定了啊
分给你
joejoe1991
2007-08-05
打赏
举报
回复
是这样?要记的给分啊
package test;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JDesktopPane;
public class Frame2 extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JDesktopPane desktop=new JDesktopPane();
JButton btn=new JButton("点");
public Frame2() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
this.setContentPane(desktop);
setSize(new Dimension(400, 300));
setTitle("Frame Title");
desktop.setLayout(borderLayout1);
this.add(btn,borderLayout1.NORTH);
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
method();
}
});
}
public void method()
{
inner inner=new inner();
this.add(inner);
}
public static void main(String[] args)
{
new Frame2().setVisible(true);
}
}
=======================================================
package test;
import java.awt.BorderLayout;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import javax.swing.table.JTableHeader;
import java.awt.event.ActionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.JInternalFrame;
import javax.swing.JTable;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
public class inner extends JInternalFrame {
BorderLayout borderLayout1 = new BorderLayout();
Object[][] object=new Object[][]{{"1","2","3"},{"4","5","6"},{"7","8","9"}};
String[] cols=new String[]{"A","B","C"};
JTableHeader header;
JTable table = new JTable(new DefaultTableModel(object,cols){
public boolean isCellEditable(int row, int column)
{
return false;
}
});
public inner() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
this.setSize(100,100);
this.setClosable(true);
this.setResizable(true);
table.addMouseListener(new inner_table_mouseAdapter(this));
this.getContentPane().add(table, java.awt.BorderLayout.CENTER);
header=table.getTableHeader();
this.add(header,java.awt.BorderLayout.NORTH);
this.setVisible(true);
}
public static void main(String[] args) {
inner inner = new inner();
}
public void table_mouseClicked(MouseEvent e) {
if (e.getClickCount()==2)
{
new Dialog1(table.getSelectedRow());
}
}
}
class inner_table_mouseAdapter extends MouseAdapter {
private inner adaptee;
inner_table_mouseAdapter(inner adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.table_mouseClicked(e);
}
}
-=================================================================
package test;
import java.awt.BorderLayout;
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
public class Dialog1 extends JDialog {
JPanel panel1 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
JLabel lab = new JLabel();
public Dialog1(Frame owner, String title, boolean modal) {
super(owner, title, modal);
try {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
public Dialog1(int row) {
this(new Frame(), "Dialog1", true);
lab.setText("你选中的是第"+(row+1)+"行");
this.setVisible(true);
}
private void jbInit() throws Exception {
panel1.setLayout(borderLayout1);
this.setContentPane(panel1);
this.setSize(100,100);
this.add(lab, java.awt.BorderLayout.CENTER);
}
}
ukeychen
2007-08-05
打赏
举报
回复
我这个主要是用在JInternalFrame里的JTable里,
我想要做的是,当鼠标双击,JTable的某行,系统就会跟该行相关的信息对话框dialog
如果,用以上方法“this(new Frame(), "Dialog1", true);”
那么我的双击事件就变成了单击事件了啊
我把我的代码粘出来,希望高手再来!!!!!!
//这是我做双击事件专门写了的一个内类
class doubleClick extends MouseAdapter{
private boolean click=false;
private long firstClick=0;
private long secondClick=0;
private int rowI=-1;
private JInternalFrame inframe;
public doubleClick(JInternalFrame inframe){
this.inframe=inframe;
}
public void mouseClicked(MouseEvent e){
if(click==false){
firstClick=new Date().getTime();
click=true;
}else if(click==true){
secondClick=new Date().getTime();
click=false;
}
if (Math.abs((secondClick-firstClick)) < 300 && (secondClick-firstClick) > 30){
exe(e);
}
}
public void mousePressed(MouseEvent e) {
if(click==false){
firstClick=new Date().getTime();
click=true;
}else if(click==true){
secondClick=new Date().getTime();
click=false;
}
if (Math.abs((secondClick-firstClick)) < 300 && (secondClick-firstClick) > 30){
exe(e);
}
}
private void exe(MouseEvent e){
rowI = table.rowAtPoint(e.getPoint());// 得到table的行号
if (rowI > -1){
String id=table.getValueAt(rowI, 0).toString();
dialog(id);
}
}
private void dialog(String id){//这个就是我要显示相关信息的dialog
//本来在这个函数里,没有下面的3句号,双击事件是可以的,
//但是有了这三句话,双击就变单击了,
JDialog dialog=new JDialog(new Frame(),"hello",true);
dialog.setSize(400,300);
dialog.setVisible(true);
System.out.println(id);
}
}
ukeychen
2007-08-05
打赏
举报
回复
哦,我知道为什么了啊!
主要是模态的关系
但是,dialog 用模态,还达不到我要做的东西的要求啊!
ukeychen
2007-08-05
打赏
举报
回复
你用JBuilder做的吧!
呵呵
this(new Frame(), "Dialog1", true);
上面这句才是我要的啊!
不过,我怎么理解,为什么 new Frame() 一下,dialog 就显示在原来的Frame上面????
这个 dialog 不是应该在在刚刚 建立的 new Frame() 上面的吗?
joejoe1991
2007-08-05
打赏
举报
回复
Frame2.java
package test;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JDesktopPane;
public class Frame2 extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JDesktopPane desktop=new JDesktopPane();
JButton btn=new JButton("点");
public Frame2() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
this.setContentPane(desktop);
setSize(new Dimension(400, 300));
setTitle("Frame Title");
desktop.setLayout(borderLayout1);
this.add(btn,borderLayout1.NORTH);
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
method();
}
});
}
public void method()
{
inner inner=new inner();
this.add(inner);
}
public static void main(String[] args)
{
new Frame2().setVisible(true);
}
}
===========================================================
inner.java
package test;
import java.awt.BorderLayout;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
public class inner extends JInternalFrame {
BorderLayout borderLayout1 = new BorderLayout();
JButton btn=new JButton("dialog");
public inner() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
this.setSize(100,100);
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new Dialog1();
}
});
this.add(btn,borderLayout1.CENTER);
this.setClosable(true);
this.setResizable(true);
this.setVisible(true);
}
public static void main(String[] args) {
inner inner = new inner();
}
}
========================================================
Dialog1.java
package test;
import java.awt.BorderLayout;
import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JPanel;
public class Dialog1 extends JDialog {
JPanel panel1 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
public Dialog1(Frame owner, String title, boolean modal) {
super(owner, title, modal);
try {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
public Dialog1() {
this(new Frame(), "Dialog1", true);
}
private void jbInit() throws Exception {
panel1.setLayout(borderLayout1);
getContentPane().add(panel1);
this.setSize(100,100);
this.setVisible(true);
}
}
Java_Swing窗体种类简介
`J
Internal
Frame
`是
一个
特殊的Swing组件,它通常用作`JDesktopPane`
中
的子窗口,允许用户在单个窗口
中
打开多个子窗口。`J
Internal
Frame
`的一些重要特性包括: - 可以通过构造函数设置标题以及是否可以改变大小、...
计算机外文翻译-菜单和工具栏大学论文.doc
在使用JMenuBar类时,需要注意菜单栏的位置,可以使用setJMenuBar()方法将菜单栏
添加
到J
Frame
、
JDialog
、JApplet或J
Internal
Frame
中
。该方法类似于java.awt.
Frame
的setMenuBar()方法,用于将菜单栏
添加
到容器
中
。 ...
Swing创建内部窗体
JPanel是Swing
中
的
一个
基础组件,可以
添加
其他组件,并且可以设置布局管理器来控制组件的排列。 ```java import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class My
Internal
Frame
...
swing基础.ppt
在Swing
中
创建GUI时,有
一个
重要的规则:Swing组件不能直接
添加
到顶层容器(如J
Frame
、JApplet、
JDialog
和JWindow)
中
,而是需要先
添加
到
一个
内容面板(content pane)或者
中
间容器上。例如,通常会使用...
JavaSwing界面设计(所有控件及示例).ppt
Java Swing是Java编程语言
中
用于构建和显示图形用户界面(GUI)的
一个
工具包。Swing提供了一套丰富的界面组件,这些组件都是AWT(Abstract Window Toolkit)的扩展,使得Java应用程序在不同平台上能够拥有一致的外观...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章