【发布时间】:2016-05-07 16:38:48
【问题描述】:
我又遇到了另一个问题:(
让我给你们看一下代码:
JCheckBox pPec = new JCheckBox("Potion Effect");
pPec.setBounds(new Rectangle(50, 270, 140, 30));
pPec.setFont(fDisp);
List<String> pPeLl = new ArrayList<String>();
for (DPE dpe : DPE.values()){
pPeLl.add(dpe.toString());
}
String[] pPeL = pPeLl.toString().replace("[", "").replace("]", "").split(", ");
JComboBox<String> pPeE = new JComboBox<String>(pPeL);
pPeE.setBounds(new Rectangle(175, 270, 150, 30));
List<String> pPeNLl = new ArrayList<String>();
for (int i = 1; i <= 255; i++){
pPeNLl.add(Integer.toString(i));
}
String[] pPeNL = pPeNLl.toString().replace("[", "").replace("]", "").split(", ");
JComboBox<String> pPeN = new JComboBox<String>(pPeNL);
pPeN.setBounds(new Rectangle(175, 300, 73, 30));
JTextField pPeT = new JTextField();
((AbstractDocument)pPeT.getDocument()).setDocumentFilter(new NumberFilter());
pPeT.setBounds(new Rectangle(175+73+4, 300, 73, 30));
if (file.exists()){
for (String s : DFileLoader.getMethod(pathToSaveAs)){
if (s.startsWith("playerPotionEffect%%@@")){
pPec.setSelected(true);
potionEffect = true;
break;
}else{
pPeN.setEnabled(false);
pPeT.setEnabled(false);
pPeE.setEnabled(false);
potionEffect = false;
}
}
if (DFileLoader.getMethod(pathToSaveAs).size() <= 0){
pPeN.setEnabled(false);
pPeT.setEnabled(false);
pPeE.setEnabled(false);
potionEffect = false;
}
}else{
pPeN.setEnabled(false);
pPeT.setEnabled(false);
pPeE.setEnabled(false);
potionEffect = false;
}
pPec.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if (pPec.isSelected()){
pPeE.setEnabled(true);
pPeN.setEnabled(true);
pPeT.setEnabled(true);
}else if (!pPec.isSelected()){
pPeE.setEnabled(false);
pPeN.setEnabled(false);
pPeT.setEnabled(false);
}
if (pPec.isSelected()) potionEffect = true;
else potionEffect = false;
}
});
pane.add(pPec);
if (file.exists()){
for (String s : DFileLoader.getMethod(pathToSaveAs)){
if (s.startsWith("playerPotionEffect%%@@")){
String[] d = s.split("%%@@");
String text;
if (d.length <= 1) text = "";
else text = d[3];
pPeE.setSelectedItem(d[1]);
pPeN.setSelectedItem(d[2]);
pPeT.setText(text);
}
}
}
pane.add(pPeN);
pane.add(pPeT);
pane.add(pPeE);
DFileLoader.getMethod(String) 返回一个字符串列表
我想要做的是它从文件中加载信息,如果文件以“playerPotionEffect%%@@”开头(如 file.exists() 之后所示),它将复选框设置为选中。如果没有,它不会选择它,它会禁用这段代码中显示的其他组件。复选框选择工作正常,只是当我加载文件时,2 个 JComboBoxes 和 JTextField 被禁用,即使我希望它们被启用。
谁能帮帮我?问题出在哪里可能真的很明显,而我只是没有注意到。我试过移动代码,但还是不行。
“窗格”是 JFrame 内容窗格的容器。
另外,当您单击复选框时,我将其设置为启用和禁用其他组件。这有效,如果我关闭并再次打开复选框,组件将被启用。但是,我只想要它以便在选中该框时在加载时启用它。
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) Java GUI 必须在不同的语言环境中使用不同的 PLAF 在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
-
DFileLoader.getMethod(pathToSaveAs)返回的是什么? -
@rdonuk 它就在代码下方。它返回一个字符串列表
-
我的意思是究竟返回什么?因为您正在设置禁用 for 循环中的组件。因此,例如,如果最后一个字符串不是以“playerPotionEffect%%@@”开头,组件将被禁用。所以检查它是否所有字符串都以“playerPotionEffect%%@@”开头。
-
@rdonuk 它返回的效果很好。所有组合框和文本字段均已正确填写。他们只是由于某种原因被禁用
标签: java swing file methods load