使用什么方法返回用户选择的选择?
JPanel ageSelection = new JPanel();
JLabel age = new JLabel("Age:");
ArrayList<Integer> ageList = new ArrayList<Integer>();
for (int i = 1; i <= 100; ++i) {
ageList.add(i);
}
DefaultComboBoxModel<Integer> modelAge = new DefaultComboBoxModel<Integer>();
for (Integer i : ageList) {
modelAge.addElement(i);
}
JComboBox<Integer> ageEntries = new JComboBox<Integer>();
ageEntries.setModel(modelAge);
ageEntries.addActionListener(new putInTextListener());
ageSelection.add(age);
ageSelection.add(ageEntries);
class putInTextListener implements ActionListener {
public void actionPerformed (ActionEvent event) {
ageEntries.getSelectedItem();
}
}
Run Code Online (Sandbox Code Playgroud)
当添加最后一行(ageEntries.getSelectedItem();)时,我收到一个错误:
线程"AWT-EventQueue-0"中的异常java.lang.NullPointerException
有任何想法吗?
编辑代码:
class putInAgeListener implements ItemListener {
public void itemStateChanged(ItemEvent e) …Run Code Online (Sandbox Code Playgroud) 我正在编写JFrame表单中的可编辑组合框,但我想改变背景颜色.
程序如何工作:如果我点击"按"按钮,那么组合框的背景需要变成黑色.
我试过了:
1.
cbo.setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情
2
cbo.getEditor().getEditorComponent().setBackground(Color.BLACK);
((JTextField) cbo.getEditor().getEditorComponent()).setOpaque(true);
Run Code Online (Sandbox Code Playgroud)
做这个:

代码示例:
public class NewJFrame extends javax.swing.JFrame {
private JComboBox cboCategorie;
public NewJFrame() {
initComponents();
cboCategorie = new JComboBox();
cboCategorie.setBounds(10, 10, 250, 26);
cboCategorie.setVisible(true);
cboCategorie.setEditable(true);
this.add(cboCategorie);
}
private void pressActionPerformed(java.awt.event.ActionEvent evt) {
cboCategorie.getEditor().getEditorComponent().setBackground(Color.BLACK);
((JTextField) cboCategorie.getEditor().getEditorComponent()).setOpaque(true);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Java JDK7
任何sugestions?
似乎在Java 7中,Objects类提供了该语言其他部分已经涵盖的许多功能.
以toString()为例.以下将产生相同的结果:
Objects.toString(12);
String.valueOf(12);
Run Code Online (Sandbox Code Playgroud)
实际上,Objects.toString定义为:
public static String toString(Object o) {
return String.valueOf(o);
}
Run Code Online (Sandbox Code Playgroud)
假设我们正在处理实际的课程.一个优先于另一个?
Objects.toString(o);
o.toString();
Run Code Online (Sandbox Code Playgroud)
语言设计师在这里告诉我们什么?我们应该开始更喜欢对象的解决方案而不是现有的解决方案吗?这样的事情的长期理由是什么?
在Java中是否可以从操作系统中复制文件并将其粘贴JTextField到复制文件的完整路径中?
例如,我的桌面上有文件"text.txt".
所以我复制它 RightClick -> Copy
在JFrame我的Java应用程序中,我专注于a JTextField和我用来CTRL+V 粘贴.然后应用程序应该将复制文件的完整路径粘贴到JTextField
我正在尝试从Java JDK 1.6更新到1.7并已下载版本7 JDK for mac(我从http://www.oracle.com/technetwork/java/javase/下载了jdk-7u71-macosx-x64.dmg downloads/jdk7-downloads-1880260.html)
但是,在运行执行的安装程序后,说它安装并复制文件,然后表明安装成功,我找不到它们安装到的位置.
我可以看到以前版本的jdk安装在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk中.
但是没有1.7的迹象,也没有使用聚光灯,我可以在我的机器上的任何地方找到任何其他.jdk或任何名为1.7.*的东西,尽管JDK安装程序说它成功了(我已尝试运行安装程序几次).
如果安装程序说它已安装,为什么我找不到它?它是否应该进入/ System/Library/Java/JavaVirtualMachines /类似于1.6,如果是这样,为什么不是它以及如何在安装程序说它这样做时安装它?
[OS X 10.9.5]
我尝试了以下代码:
String str = "Str1";
switch(str) {
case Constants.First_String : System.out.println("First String");
break;
case Constants.Second_String : System.out.println("Second String");
break;
default : System.out.println("Default String");
}
Run Code Online (Sandbox Code Playgroud)
我的Constants班级是,
public class Constants {
public static String First_String = "Str1";
public static String Second_String = "Str2";
public static String Third_String = "Str3";
}
Run Code Online (Sandbox Code Playgroud)
我收到了编译错误,
线程"main"中的异常java.lang.Error:未解决的编译问题:case表达式必须是常量表达式
但是当我尝试使用以下代码时,
switch(str){
case "Str1" : System.out.println("First String");
break;
case "Str2" : System.out.println("Second String");
break;
default : System.out.println("Default String");
}
Run Code Online (Sandbox Code Playgroud)
没有编译错误,并将输出打印为,
First String
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么在第一种情况下会出现补偿错误.我该如何解决呢.
他们为什么添加AutoCloseable和更改Closeable如下:
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
Run Code Online (Sandbox Code Playgroud)
而不是仅Closeable进行如下更改(不添加AutoCloseable):
public interface Closeable {
public void close() throws Exception;
}
Run Code Online (Sandbox Code Playgroud)
第二种解决方案的优点是:1)生成的异常数没有限制(请参阅参考资料IOException)2)Closeable本身无需扩展就可以在try-with-resources中使用AutoCloseable
3)这不会破坏现有代码,因为实现可以仅具有比接口中定义的异常更受限制的异常4)没有过度设计
是否有任何理由为什么他们决定采用第一个解决方案而不是第二个解决方案?
CentOS 7 devbox安装了Java 8.我需要使用Java 7来编译jar.所以我下载并安装了Java 7,但java -version仍然显示了Java 8. 如何确保使用Java 7在命令行编译jar?
以下是我安装Java 7的步骤:
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-linux-x64.rpm
# rpm -ivh jdk-7u75-linux-x64.rpm
# export JAVA_HOME=/usr/java/latest
# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,java -version仍然指向Java 8,即使/usr/java/latest指向刚刚下载和安装的Java 7版本.
我想要运行的命令是java -jar gs-actuator-service-0.1.0.jar. 有人可以展示如何更改该特定命令中的语法以指定Java 7版本吗?或者我需要删除Java 8吗?如果是这样,我会采取哪些具体步骤?
每次运行Android Studio时,都会弹出此加载屏幕,但Android Studio会保留在此处并且不会加载.这就像下面的图片,除了装载栏一直装满但卡在那里.我正在运行Windows 10.
我已经尝试了很多东西,包括将系统变量设置JDK_HOME到我JDK所在的位置和相同的位置JAVA_HOME.我也设定了一条路.我作为管理员多次运行,让AS通过防火墙.
我也重新启动并重新安装了无数次.
AS的版本是2.0,我正在运行最新版本的Java.
有帮助吗?
我在理解如何在Java7中"迁移"一个简单的Comparator时遇到了麻烦.
我在Java8中使用的实际版本如下:
private static final Comparator<Entry> ENTRY_COMPARATOR = Comparator.comparing(new Function<Entry, EntryType>() {
@Override
public EntryType apply(Entry t) {
return t.type;
}
})
.thenComparing(Comparator.comparingLong(new ToLongFunction<Entry>() {
@Override
public long applyAsLong(Entry value) {
return value.count;
}
}).reversed());
Run Code Online (Sandbox Code Playgroud)
但在构建阶段我得到这个错误:
static interface method invocations are not supported in -source 7
Run Code Online (Sandbox Code Playgroud)
如何将相同的比较器迁移到Java7?我正在谷歌搜索和搜索解决方案,但我唯一能想到的是,将我自己的类实现为Comparator接口实现.
但是,如果我走这条路,我怎样才能在同一"比较"方法中应用"比较","然后比较"和"反向"?
提前致谢