netbeans图形界面如何设置对话框?

netbeans图形界面如何设置对话框?,第1张

这个问题和d出式菜单一样,他们都属于“同一类”。当你把JDialog拖拽到JFrame里的时候,在编辑器视图的左边你会看到生成的变量名,也就是jDialog1.双击它,就会出现它设计器了。如果你需要调用它,必须使用jDialog.setVisible(true)

我这有一个差不多一样的,带详细注释,是别一个程序,希望对你有用,代码如下所示。

import javax.swing.*

import java.awt.*

import java.awt.event.*

public class colorChange extends JFrame

{ JButton jbutton //定义按钮

Container content //定义容器窗口

public colorChange(){

content=getContentPane()//获取当前窗口的内容窗口

content.setLayout(new FlowLayout())//设置当前的布局方式为流式布局

content.setBackground(Color.GREEN)//设置当前窗口的背景颜色

jbutton=new JButton("改变窗口颜色")//创建一个按钮

jbutton.setBounds(20,20,100, 100)

jbutton.addActionListener(new CChange())//为按钮添加事件

content.add(jbutton) //将按钮添加到内容窗口上

setTitle("单击事件测试")//设置窗口标题

setSize(300,300)//设置窗口显示尺寸

setVisible(true)//设置窗口是否可见(true可见,false不可见)

}

class CChange implements ActionListener{

//CChange类继承按钮事件ActionEvent的ActionListener监听器接口。

public void actionPerformed(ActionEvent e){ //事件的默认方法

content.setBackground(Color.blue)//改变当前窗口的背景颜色

setSize(400,300)//设置当前窗口的大小

}

}

public static void main(String[] args)

{

new colorChange() //创建一个实例化对象

}

}

这个问题随便怎么搞都行啊,无非也就是代码好看与否,架构是否合适的问题。

我写了个测试程序,图片还是留给你自己解决吧。我的程序运行会有一个主窗口,中心是一个JLabel,显示你的用户名,底下一个按钮,点击之后d出一个框,d出框包含一个下拉框,你可以选择需要修改的用户名,选择完毕后点大叉关闭,这时候主窗口的用户名就变掉了(确认按钮不做了,这个不是重点)。

因为我不知道你在整个流程中哪里遇到了问题,所以知道写了完整的代码。不过缺点就是你看起来也略麻烦。这里的关键问题是,d出框相当于另一个程序,你只要把用户在这里选择的值以某种方式记录下来即可。

我唯一要给你的建议是,不要用JFrame,用JDialog,从名字上就看出来,后者是对话框。如果你要修改信息,那么从业务上讲,也更接近于对话框,JFrame则更多的用于主窗口。JDialog的好处在于,它允许你设置modal属性以及父窗口,这样一来,你就不必担心对话框什么时候被关闭。JDialog的setVisible方法是会阻塞的,知道这个窗口消失或者被废弃。相似的例子你可以参考JFileChooser,你可以看为什么调用JFileChooser.showOpenDialog可以返回给你选择的文件,和你这里的逻辑是一样的。

import java.awt.BorderLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.ItemEvent

import java.awt.event.ItemListener

import javax.swing.JButton

import javax.swing.JComboBox

import javax.swing.JDialog

import javax.swing.JFrame

import javax.swing.JLabel

public class DummyTest {

public static void main(String[] args) {

final JFrame mainFrame = new JFrame()

final JLabel nameLabel = new JLabel()

nameLabel.setText("Default Name")

mainFrame.add(nameLabel, BorderLayout.CENTER)

JButton button = new JButton()

button.setText("Change Name")

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

nameLabel.setText(showDialog(mainFrame))

}

})

mainFrame.add(button, BorderLayout.SOUTH)

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

mainFrame.setSize(400, 400)

mainFrame.setVisible(true)

}

private static String showDialog(JFrame mainFrame) {

Object[] names = new Object[] { "Name1", "Name2", "Name3", }

final NameSelectionDialog dialog = new NameSelectionDialog(

mainFrame, names[0].toString())

final JComboBox combo = new JComboBox(names)

combo.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

dialog.selectedName = combo.getSelectedItem().toString()

}

})

dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

dialog.add(combo)

dialog.pack()

dialog.setVisible(true)

return dialog.selectedName

}

static class NameSelectionDialog extends JDialog {

String selectedName = null

NameSelectionDialog(JFrame owner, String initName) {

super(owner, true)

selectedName = initName

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11172244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存