标签: jdialog

单击按钮即可打开 JDialog

我试图在按下JDialoga 中的按钮时打开 a,并且该对话框应包含.JFrameJTable

我应该在哪里创建对话框(在框架内还是应该创建一个新类)?

java swing jdialog

2
推荐指数
1
解决办法
8139
查看次数

JList修改后的JDialog重绘

我有一个由JFrame frm创建的JDialog dlg,它包含一个JList列表.当我修改列表(通过ListModel)时,列表本身被重新绘制,但不是JDialog.这意味着,如果我删除一行,列表将保留一个空行,而如果我添加一行,则不会显示此新行(因为对话框中没有空格),直到我手动强制重新绘制dlg(双击frm).

根据这篇文章中的建议: 如何在Swing中重新绘制JDialog?

并在这篇文章中:点击按钮强制重绘

我试图从我的控制器类(这是列表更新的位置)调用,如下所示:

SwingUtilities.getWindowAncestor(dlg).repaint();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也尝试过:

dlg.repaint();
Run Code Online (Sandbox Code Playgroud)

没有运气......

任何线索?非常感谢你.

编辑:我的类的组织如下:一个控制器类,包含对主JFrame的引用,frm.我还将JDialog扩展为MyDialog,其中包含一个JList.当检测到双击frm时,我会显示MyDialog的实例(或创建,如果它是我第一次显示它),并且JList填充了传递给DefaultListModel的数据.绘制了MyDialog,使列表只有它所需的空间.现在,当控制器检测到特定事件时,我得到特定的MyDialog,从JList获取ListModel并更新它.这里JList确实更新了,但Dialog保持不变.我使用这样的代码:

MyDialog dlg = group.getDlg();
if(dlg != null){
    DefaultListModel listModel = ((DefaultListModel) dlg.getMyJList().getModel());
    listModel.addElement(idStock);
    SwingUtilities.getWindowAncestor(dlg).repaint();
}
Run Code Online (Sandbox Code Playgroud)

这不会重绘dlg.我也尝试过:

SwingUtilities.getWindowAncestor(dlg.getMyJList()).repaint();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我检查了调试器实际执行的行.

我没有更多的代码可以显示,真的......

java swing jdialog

1
推荐指数
1
解决办法
1669
查看次数

如何使用新信息更新JDialog?

我有一个Gui,它允许用户单击一个按钮并查看文本文件的内容.问题是文件可能相当大(100,000多行数据),并且在表中读取和显示可能需要15秒以上.

文本文件格式的示例:

*/
    Account ID     : 8 digit number
    Money Charged  : Integer < $10
    Values separated by \t 

/*


Account Id    Money Charged
----------    --------------
731298        3
359412        5
624937        1
Run Code Online (Sandbox Code Playgroud)

因此,当单击该按钮时,它会读取每一行并将每个ID放入一个地图中并增加帐户的费用.

完成后,它会将一个JTable放在一个带有信息的JDialog中.但是,只要单击该按钮,用户可能会对程序正在执行的操作感到困惑,因为在JDialog和JTable出现之前我已经经历了超过10-15秒的延迟.

那么有没有办法让JDialog显示一个字符串,让用户知道它正在创建表?(我认为它会使用的方法的JDialog如一个完成repaint()validate但这些似乎并没有这样的伎俩.

这是我认为应该完成的顺序:

//Psuedo-code
actionPerformed {
    create frame
    display label that lets user know its creating table
    read text file
    create map and place values
    remove label
    update dialog with table // unsure what to do to update it properly
}
Run Code Online (Sandbox Code Playgroud)

所以我的整体问题很简单: 是否可以告知用户它当前正在计算数据(通过JDialog中的JLabel),一旦读取数据,就显示JTable(通过更新JDialog)? …

java swing jdialog repaint

1
推荐指数
1
解决办法
3195
查看次数

如何在jdialog的ok选项上设置actionlistener?

嗨我想按下jdialog的ok按钮时触发一些动作,我知道你可以这样做

int rep =JOptionPane.showConfirmDialog(null, pangesfac, "Gestion des chambres a facturer", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
    if(rep == JOptionPane.OK_OPTION) {//actions to do}
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,当按下确定按钮时,我想要一个外部控制器来处理必须完成的事情(我的代码由mvc构成).那你如何在ok按钮上设置动作列表器呢?

java swing jdialog actionlistener

1
推荐指数
1
解决办法
318
查看次数

Java MouseListener并不总是有效

我觉得奇怪的是,在我的项目中,并不总能听到mouselistener.还有其他人遇到过这个吗?或者我做错了什么?在打开之前我有时会多次点击它.我会在点击之间等待,看看它是否是性能问题.

JButton btnPin = new JButton("Pin");
btnPin.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent arg0) {
        if(staffPinDialog == null || staffPinDialog.isShowing() == false)
            staffPinDialog = new StaffPinDialog(idClicked);                 
    }
});
Run Code Online (Sandbox Code Playgroud)

StaffPinDialog是一个JDialog,其中的引用已在其他地方创建.idClicked也始终初始化.

java swing awt jdialog mouselistener

1
推荐指数
1
解决办法
1302
查看次数

Java:如何判断何时移动JFrame或JDialog?

我的JDialog内部有个物件,JFrame我希望它与我的物件一起移动JFrame。因此,当用户在周围拖动窗口时,我希望窗口JDialog保持在同一位置。

我如何知道用户何时拖动JFrameJDialog以便设置其他位置?还是有另一种方法?

java swing listener jframe jdialog

1
推荐指数
1
解决办法
1007
查看次数

在JDialog中添加JPanel周围的空间?

我正在构建动态JDialogs.我有一些JPanels,当你选择一个菜单选项我创建一个模态JDialog,添加一个JPanel并显示它:

JDialog dlg = new JDialog(this, title, true);
dlg.getContentPane().add(panel);
dlg.pack();
dlg.setLocationRelativeTo(null);
dlg.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

我的应用程序运行良好,但JDialog的边框和添加的面板之间没有空间,它看起来非常"完整/拉伸"(对不起,我不知道该怎么说).也许问题是我正在调用JDialog.pack(),但是在运行时我不知道面板的大小,所以我创建了没有维度的JDialog,并且在添加内容后我将其打包.

我的问题是:我可以做些什么来增加面板周围的空间?

一种可能的解决方案是添加BorderLayout,将面板放在中心,每侧有4个固定尺寸的面板......但这看起来很难看......

java swing border jpanel jdialog

1
推荐指数
1
解决办法
1952
查看次数

Java - 将大小设置为JDialog

我有一个奇怪的问题,我做了两个类(它们非常相似),但在第一个类中setPreferredSize方法,在另一个不工作; 所以我必须使用(在这个类中)setSize()方法.这真的很奇怪.我发布了我的代码:

在这个课程中,它运作良好

package StudentNotes;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Timer;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;

import StudentNotes.TextPrompt.Show;

import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class CreateCourse extends JDialog {
    private JTextField tFieldCourseName;


    /**
     * Create the dialog.
     */
    public CreateCourse(JDialog mainFrame, final StudApp studAppObj) {
        super(mainFrame, ModalityType.APPLICATION_MODAL);
        setPreferredSize(new Dimension(330, 200)); //it works
        setTitle("Create a course");
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); …
Run Code Online (Sandbox Code Playgroud)

java swing jdialog

1
推荐指数
1
解决办法
5234
查看次数

放弃JDialog中的控制权

我有一个JFrame创建一个无模式的JDialog.在某些情况下(可能总是),我传递给JDialog构造函数,我希望JDialog保持可见但控制返回到调用JFrame.用户随后可以与JDialog交互或关闭.

我研究过,但还没有找到办法做到这一点.任何建议/帮助表示赞赏.

java swing jframe jdialog

1
推荐指数
1
解决办法
60
查看次数

每次获取dispose/setVisible(true)时JDialog变小

第一次打电话

在此输入图像描述

[10次召唤] [3]

在此输入图像描述

经过更多的交互,JDialog结束于浮动标题栏.调整大小"重置"cicle.下面是JPanel中调用此JDialog的代码.不知道是什么让它变小了,只是在垃圾邮件发送此按钮后发现它.

public class Mant_presentacion extends JPanel implements ActionListener{

Boton buscar_envase = new Boton(this, new ImageIcon("lupa.png"));   
Mant_env envase = new Mant_env();   
public final JFrame OWNER;

public Mant_presentacion(JFrame OWNER){
    this.OWNER = OWNER;
    setLayout(null);
    setBackground(Color.WHITE);
    d = new JDialog(OWNER, "Seleccionar envase", true);
    buscar_envase.setBounds(500, 50, 180, 30);
    buscar_envase.setText(" Examinar envases");
    buscar_envase.addActionListener(this);
}

JDialog d;

@Override
public void actionPerformed(ActionEvent e) {
    d.setSize(envase.getWidth(), envase.getHeight());
    d.add(envase);
    d.setLocationRelativeTo(null);
    d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    d.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)

java size swing action jdialog

1
推荐指数
1
解决办法
37
查看次数

标签 统计

java ×10

jdialog ×10

swing ×10

jframe ×2

action ×1

actionlistener ×1

awt ×1

border ×1

jpanel ×1

listener ×1

mouselistener ×1

repaint ×1

size ×1