jcombobox正在列出,但无法选择linux java1.6中的项目
我在LinuxJava1.6中遇到jcombobox问题。确切的问题是,当我单击组合框(向下箭头)时,组合框会列出项目,但如果选择关闭,它会最小化。i、 e我无法选择列表中的项目。同样的代码在windows(java1.5、1.6)和linux(java1.5)中工作。这个问题只存在于LinuxJava1.6中 请帮我摆脱这一切。提前谢谢jcombobox正在列出,但无法选择linux java1.6中的项目,java,linux,swing,jcombobox,java-6,Java,Linux,Swing,Jcombobox,Java 6,我在LinuxJava1.6中遇到jcombobox问题。确切的问题是,当我单击组合框(向下箭头)时,组合框会列出项目,但如果选择关闭,它会最小化。i、 e我无法选择列表中的项目。同样的代码在windows(java1.5、1.6)和linux(java1.5)中工作。这个问题只存在于LinuxJava1.6中 请帮我摆脱这一切。提前谢谢 Below is the code, import java.awt.*; import java.awt.event.*; import javax.s
Below is the code,
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JComboBoxDemo extends JPanel {
public JComboBoxDemo() {
String[] comboTypes = { "Numbers", "Alphabets", "Symbols" };
// Create the combo box, and set 2nd item as Default
JComboBox comboTypesList = new JComboBox(comboTypes);
comboTypesList.setSelectedIndex(2);
comboTypesList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox jcmbType = (JComboBox) e.getSource();
String cmbType = (String) jcmbType.getSelectedItem();
System.out.println(cmbType);
}
});
// Set up the picture
// Layout the demo
setLayout(new BorderLayout());
add(comboTypesList, BorderLayout.NORTH);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
public static void main(String s[]) {
JFrame frame = new JFrame("JComboBox Usage Demo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setContentPane(new JComboBoxDemo());
frame.pack();
frame.setVisible(true);
}
}
以下变体在Ubuntu 12、OpenJDK 6上正常工作。唯一显著的变化是从第二天开始 为什么linux中的Java1.5和Java1.6存在这种差异 JavaSwing始终需要正确的同步。迁移到后续版本有时会暴露出潜在的错误
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JComboBoxDemo extends JPanel {
public JComboBoxDemo() {
String[] comboTypes = {"Numbers", "Alphabets", "Symbols"};
JComboBox comboTypesList = new JComboBox(comboTypes);
comboTypesList.setSelectedIndex(2);
comboTypesList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox jcmbType = (JComboBox) e.getSource();
String cmbType = (String) jcmbType.getSelectedItem();
System.out.println(cmbType);
}
});
setLayout(new BorderLayout());
add(comboTypesList, BorderLayout.NORTH);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
public static void main(String s[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("JComboBox Usage Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new JComboBoxDemo());
frame.pack();
frame.setVisible(true);
}
});
}
}
谢谢你的帮助 经过这么多的努力,我终于找到了解决方案(即使是一个简单的解决方案) 当我调用frame.setUndecorated(true)时,问题得到了解决 在我的应用程序中,我们定制了操作系统,它不支持装饰框架
因此,当我调用此方法时,效果很好 尝试在
EventQueue.invokeLater(new Runnable(){public void run(){…})中包装main
的内容代码>如jlbPicture.setPreferredSize(新尺寸(177122+10))中所述代码>请参阅(是)。您好,谢谢您的回复。我没有使用jlbPicture,甚至现在也出现了同样的问题。提示:1)添加@MadProgrammer(或任何人-the@很重要)以通知他们新的评论。2) 注意到你采纳了我的建议,仔细阅读。我没有告诉您在EDT上创建GUI的唯一原因是已经说过了。不要忽视建议。@Andrew Thompson我不明白,当我解开jcombobox(向下箭头)时,这也没有显示下拉列表。我无法使用JDK 6在Ubuntu 12或Mac OS X 10.9上重现这一点。您使用的是什么平台和版本?我使用的是Linux x86_64您可以尝试更新您的系统并编辑您的问题,以包括Linux x86_64发行版和Java开发工具包的确切名称和版本;有人可能会重现这个问题。在linux中,如果我按Ctrl+Alt+l,那么我就可以正常选择项目。我可以知道当我点击Ctrl+Alt+l时背景中到底发生了什么吗