Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JCombobox意外行为_Java_Swing_Jcombobox - Fatal编程技术网

Java JCombobox意外行为

Java JCombobox意外行为,java,swing,jcombobox,Java,Swing,Jcombobox,我在Netbeans中设计了一个JFrame,如下图所示: 当我运行程序时,组合框变为全白色,如下图所示: 和。。当我点击“空白”区域时,它会显示组合框内可选择的项目。。但即使在选择之后,仍然是相同的空白,没有正确显示布局和所选项目 我的代码如下: public class LoginWindow extends javax.swing.JFrame { /** * Creates new form LoginWindow */ public LoginWindow() { i

我在Netbeans中设计了一个JFrame,如下图所示:

当我运行程序时,组合框变为全白色,如下图所示:

和。。当我点击“空白”区域时,它会显示组合框内可选择的项目。。但即使在选择之后,仍然是相同的空白,没有正确显示布局和所选项目

我的代码如下:

public class LoginWindow extends javax.swing.JFrame {

/**
 * Creates new form LoginWindow
 */
public LoginWindow() {
    initComponents();
    setLocationRelativeTo(null);

    new MyWorker().execute();
}
..........
    class MyWorker extends javax.swing.SwingWorker<String, Void> {

    protected String doInBackground() {
        databaseCheck();
        return "done";
    }

    protected void done() {
        progressPanel.setVisible(false);
        loginPasswordField.setEnabled(true);
        locationComboBox.setEnabled(true);
        loginButton.setEnabled(true);
        loginPasswordField.requestFocusInWindow();
    }
}
工人阶级如下:

public class LoginWindow extends javax.swing.JFrame {

/**
 * Creates new form LoginWindow
 */
public LoginWindow() {
    initComponents();
    setLocationRelativeTo(null);

    new MyWorker().execute();
}
..........
    class MyWorker extends javax.swing.SwingWorker<String, Void> {

    protected String doInBackground() {
        databaseCheck();
        return "done";
    }

    protected void done() {
        progressPanel.setVisible(false);
        loginPasswordField.setEnabled(true);
        locationComboBox.setEnabled(true);
        loginButton.setEnabled(true);
        loginPasswordField.requestFocusInWindow();
    }
}
MyWorker类扩展了javax.swing.SwingWorker{ 受保护字符串doInBackground(){ 数据库检查(); 返回“完成”; } 受保护的void done(){ progressPanel.setVisible(假); loginPasswordField.setEnabled(true); locationComboBox.setEnabled(真); loginButton.setEnabled(true); loginPasswordField.requestFocusInWindow(); } }
必须注意的是,这种行为大多是有经验的,尽管有时效果很好(很少)。。。任何帮助都将不胜感激。

我只是在试图发布SSCCE时似乎已经修复了它

框架上可见的实际组件大小为[256,29]。。然而,首选尺寸不同,这似乎导致了问题

    locationComboBox.setPreferredSize(new java.awt.Dimension(256, 29));

这就解决了问题。

你能发布一个吗?SSCE也被称为,它引用了一个最小的示例(你能提供的代码越少),但仍然会重现错误,它必须是一个完整的代码,所以我们可以复制粘贴它,并在我们的计算机上看到它,从而能够更好地帮助你。@Frakcool修复了它。。谢谢您的时间。我建议您也阅读
setMinimumSize
setPreferredSize
的答案。当然,这就是为什么我们要求一个MCVE,当你试图解决任何问题时,如果你把它带到基础上,那么有时候你会自己找到答案。下次再问之前想一想:)哦,别忘了检查你的答案是否被接受(当系统允许时,如果我没有错,将在2天内)。如果您正在使用多个
JFrames
,您还应该阅读感谢链接。我肯定会更多地研究布局管理器,并在我的应用程序中实现它,因为我已经注意到组件在不同平台上存在大小问题。。但我想知道,如果GUI构建器在我创建组件时显示该组件,并且当应用程序运行时,它可能会导致意外问题/根据我最初没有设置的默认minimumSize/preferredSize值自动调整大小,那么这为什么会是一个问题。。哈哈!是的,我以前使用多个JFrames,但现在我在阅读了这个链接后更改了我的所有应用程序:pyesjavaswing是为使用而设计的,而不是使用多个
JFrames
您可以使用一个。希望这能有所帮助,我不明白你的意思,但我想知道如果GUI生成器在我制作组件时显示组件,并且在应用程序运行时显示组件,直到“哈哈!”为止,为什么这会是一个问题,但由于字符限制,我无法复制粘贴所有组件。你能解释一下,也许我能给你另一个建议吗?不确定,也许其他人能回答这个问题。但我觉得没有什么比不使用IDE更好的了。
    locationComboBox.setPreferredSize(new java.awt.Dimension(256, 29));