java 请问如何在按下一个按钮后在panel上添加另一按钮并显示

java 请问如何在按下一个按钮后在panel上添加另一按钮并显示,第1张

我在用轻量级的javax.swing.JPanel和javax.swing.JButton试过,

可以通过在actionPerformed里调用jPanel.add(new JButton("XXX"))来增加一个按钮.

//注jPanel是JPanel的一个实例.

但点击的时候,按钮实际上是建立了,但却没有显示出来.这时如果你改变一下你的窗口大小的话,你会发现,这个按钮已经建立了.这就需要在add之后,让窗口重绘了.

理论上再调用repaint()可以重绘,但我试过之后发现还是没有直接把这个按钮显示出来

我们知道,画布的大小被改变的时候,肯定是会重绘的,所以可以我试了一个很笨的方法,用setSize(0,0)之后,再setSize(yourX,yourY)当然,你如果是自然调整大小的,后面加一个pack()就OK了.这样会看到类似于网页刷新似的一闪,就会多出一个按钮来了.

当然我觉得应该有更好的办法可以来通知系统重绘窗口.

问题补充做打

首先楼主你的Dialog

其实已经添加了按钮,只不过一开始没有显示

你需要用鼠标拖动一下对话框,才能显示按钮,

第二添加事件监听就象我以前说的一样

使用的是btn.addActionListener(new ActionListener(){

事件代码

})

我补充了一下你的代码

如下:

import java.awt.BorderLayout

import java.awt.Color

import java.awt.Container

import java.awt.Dialog

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.io.File

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JPanel

import javax.swing.JTextField

public class Del {

JTextField pathField

JFrame delFrame

JPanel panel

Dialog completeDialog

public static void main(String[] args) {

new Del()

}

public Del() {

frameDel()

}

public void frameDel() {

delFrame = new JFrame("文件删除器")

delFrame.setBounds(150, 150, 500, 200)

delFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

delFrame.setVisible(true)

delFrame.setLayout(null)

panel = new JPanel()

Container con = delFrame.getContentPane()

con.setBounds(0, 0, 400, 200)

con.setBackground(new Color(222, 111, 111))

con.setLayout(null)

pathField = new JTextField()

pathField.setBounds(30, 30, 250, 30)

con.add(pathField)

JButton delButton = new JButton("删除")

delButton.setBounds(350, 30, 60, 30)

con.add(delButton)

delButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

delFile(pathField.getText())

}

})

delFrame.validate()

delFrame.repaint()

}

public void delFile(String path) {

File goalFile = new File(path)

if (goalFile.exists()) {

goalFile.delete()

completeDialog = new Dialog(delFrame, "删除结果提示")

completeDialog.setVisible(true)

completeDialog.setBounds(250, 250, 250, 90)

completeDialog.setModal(true)

JButton testButton = new JButton("继续删除")

JButton testButton2 = new JButton("退出")

completeDialog.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {

System.exit(0)

}

})

testButton2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0)

}

})

testButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

completeDialog.setVisible(false)

}

})

panel.add(testButton,BorderLayout.WEST)

panel.add(testButton2,BorderLayout.EAST)

completeDialog.add(panel,BorderLayout.CENTER)

pathField.setText("文件删除成功!")

} else {

pathField.setText("文件不存在!")

}

}

}

不过缺点在于以显示的时候只有一个对话框,没有按钮,只有用鼠标拖动对话框的大小后才能显示按钮,我这个在找方法,希望你能找到方法解决,我对javaGUI学的不深,希望有哪位大侠可以给个方法解决一下一开始不显示按钮的问题

你所有画出来的东西要放在paint方法里

你如果想画多条 就把所有的线条先保存在一个集合里

再遍历这个集合把每一条线条画出来

这个集合可以弄成变量 你每多一条线条

就把这个线条放进集合里,然后再repaint一下就行了


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

原文地址:https://54852.com/bake/11623080.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存