Я работаю над модулем Java Swing, в котором я хочу возвращать данные в текстовые поля и метки Java Swing.
Текстовые поля и JLabel
должны динамически меняться в зависимости от извлечения данных, и я не знаю об имени свойств и их значениях... но мне нужно получить данные из файла свойств, не зная имя свойства и его значение в Jlabel
и Jtextboxes
.
... и они должны варьироваться в зависимости от данных... например, имя свойства должно входить в Jlabel
, а его значение должно входить в Jtextboxes
...
Я использовал заданный интерфейс структуры сбора, поэтому я получил все данные из файла свойств в его ключ и значения ключа... но я не знаю, как показать это в Jlabel
и JTextBox
s
public class ConfigSwingDemo extends JFrame
{
private File configFile = new File("momark.properties");
private Properties configProps;
private JButton buttonSave = new JButton("Save");
static List<JLabel> listOfLabels = new ArrayList<JLabel>();
static List<JTextField> listOfTextFields = new ArrayList<JTextField>();
public ConfigSwingDemo()
{
super("Properties Configuration Demo");
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.insets = new Insets(10, 10, 5, 10);
constraints.anchor = GridBagConstraints.WEST;
constraints.gridy = 1;
constraints.gridx = 0;
constraints.gridwidth = 2;
constraints.anchor = GridBagConstraints.CENTER;
add(buttonSave, constraints);
buttonSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try {
saveProperties();
JOptionPane.showMessageDialog(ConfigSwingDemo.this,
"Properties were saved successfully!");
} catch (IOException ex) {
JOptionPane.showMessageDialog(ConfigSwingDemo.this,
"Error saving properties file: " + ex.getMessage());
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
try {
loadProperties();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "The momark.properties file does not exist, default properties loaded.");
}
Set<Object> keys = configProps.keySet();
for(Object k:keys){
String key = (String)k;
System.out.println(key+": "+configProps.getProperty(key));
}
}
/////////////////
private void loadProperties() throws IOException {
Properties defaultProps = new Properties();
// sets default properties
configProps = new Properties(defaultProps);
// loads properties from file
InputStream inputStream = new FileInputStream(configFile);
configProps.load(inputStream);
inputStream.close();
}
private void saveProperties() throws IOException {
//configProps.setProperty("server.url", textUrl.getText());
OutputStream outputStream = new FileOutputStream(configFile);
configProps.store(outputStream, "properties setttings");
outputStream.close();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ConfigSwingDemo();
}
});
}
}
/*консоль вывода:
property1 : value1
property2 : value2
property3 : value3
property4 : value4
я хочу динамически отображать выходные данные в полях Jlabel и Jtext, не зная данных о свойствах.. поэтому, если свойства увеличиваются, JLabels и текстовые поля также увеличиваются в соответствии со свойствами */
Properties
в парах ключ/значение, предполагая, что ключ представляет собой метку, а значение — текст, вы можете использоватьpropertyNames
, чтобы получитьEnumeration
и выполнить итерацию по списку... что позволит вам создать метки /поля. Но вам, вероятно, понадобится еще одинMap
, который сопоставляет ключи/метки с полями... - person MadProgrammer   schedule 19.06.2015JLabel
иJTextField
? Вы, очевидно, знаете, как использоватьGridBagLayout
, у вас есть кнопка сохранения... - person MadProgrammer   schedule 19.06.2015Map
. - person MadProgrammer   schedule 19.06.2015JTextBox
- В JSE такого нет. ДЫМJTextField
илиJTextArea
возможно? - person Andrew Thompson   schedule 19.06.2015