#java #swing #jbutton #jtextfield
#java #swing #jbutton #jtextfield
Вопрос:
открытый класс FormattedName расширяет javax.swing.JFrame {
/** Creates new form FormattedName */
public FormattedName() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Formatted = new javax.swing.JTextField();
NameOpt = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Formatted.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
FormattedActionPerformed(evt);
}
});
NameOpt.setText("Name");
NameOpt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
NameOptActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(NameOpt)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(Formatted, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(NameOpt)
.addComponent(Formatted, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(21, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void FormattedActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void NameOptActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Opt option = new Opt();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormattedName().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextField Formatted;
private javax.swing.JButton NameOpt;
// End of variables declaration
}
и другой класс
выбор открытого класса расширяет javax.swing.JFrame {
/** Creates new form Opt */
public Opt() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
firstname = new javax.swing.JLabel();
lastname = new javax.swing.JLabel();
middleName = new javax.swing.JLabel();
first_name = new javax.swing.JTextField();
last_name = new javax.swing.JTextField();
middlename = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
firstname.setText("FirstName");
lastname.setText("LastName");
middleName.setText("MiddleName");
first_name.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
first_nameActionPerformed(evt);
}
});
last_name.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
last_nameActionPerformed(evt);
}
});
jButton1.setText("OK");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton1)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(middleName)
.addComponent(lastname)
.addComponent(firstname))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(first_name, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
.addComponent(last_name)
.addComponent(middlename))))
.addContainerGap(22, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(firstname)
.addComponent(first_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lastname)
.addComponent(last_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(middleName)
.addComponent(middlename, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void first_nameActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void last_nameActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String firstname = first_name.getText();
String lastname = last_name.getText();
outputName = firstname lastname;
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Opt().setVisible(true);
}
});
}
private String outputName;
// Variables declaration - do not modify
private javax.swing.JTextField first_name;
private javax.swing.JLabel firstname;
private javax.swing.JButton jButton1;
private javax.swing.JTextField last_name;
private javax.swing.JLabel lastname;
private javax.swing.JLabel middleName;
private javax.swing.JTextField middlename;
// End of variables declaration
}
как мне синхронизировать ввод, введенный в классе Opt textfield, с текстовым полем class FormattedName без события кнопки OK.
пробовал использовать get(), но не работает.
Комментарии:
1. То, что вы, вероятно, ищете, называется «Привязкой». Взгляните на BBB ( kenai.com/projects/betterbeansbinding/pages/Home ) или JGoodies-Привязка ( jgoodies.com/downloads/libraries.html ); лично я предпочитаю последнее, но мнения могут отличаться.
Ответ №1:
Создайте метод получения в Opt, который описывает текст, что-то вроде
public String getFullName(){
return first_name.getText() middelname.getText() last_name.getText();
}
Вы можете использовать это в своем nameOptActionPerformed()
private void nameOptActionPerformed(java.awt.event.ActionEvent evt) {
Opt option = new Opt();
option.setVisible(true);
}
Теперь у вас есть два варианта
- сделайте класс Opt модальным JDialog вместо JFrame или
- предоставьте обработку события кнопки ok классу FormattedName.
Я лично иду с модальным диалогом.
Комментарии:
1. Я добавляю метод getFullName() в класс Opt, а в класс FormattedName добавляю новый Opt().getFullName(); в FormattedActionPerformed(java.awt.event. ActionEvent evt).все еще не работает.
2. @reukEN Вам нужно разрешить пользователю сначала ввести что-то там! Это причина модального диалога. т. Е. дождитесь закрытия окна, затем прочитайте ввод.
3. giraffe.я вижу.нет, я не менял его на JDialog. я объявил частный параметр с именем FullName в Opt, а затем в getFullName(){ FullName = first_name.getText() …… ; возвращает fullname } .в FormattedName добавьте Formatted.setText(новый Opt().getFullName()); n по-прежнему не work.am я здесь что-то делаю не так? сделал это, когда я читал о доступе к var из другого класса. читайте также о observable n можно ли это применить здесь для простого вывода текста?
4. @reukEN Я предлагаю вам отредактировать свой вопрос, чтобы было ясно, каковы ваши цели.