私は最初のGUIを構築していますが、これまでのところ、JDialog
. 初めて使用するときは、それに応じて名前とプロセスのリストを受け入れます。しかし、新しい入力を入力するために引き上げると、反応しなくなります。System.out.println ( SwingUtilities.isEventDispatchThread() );
ソースコード全体でいくつかのステートメントを使用してコードをテストしたため、スレッドの問題ではないと思います。問題の原因となっている可能性のあるコードの一部を次に示します。
package testme;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test {
JDialog dialog;
JButton horseList, ok, clear;
JPanel jpDialog = new JPanel();
JPanel buttonPanel = new JPanel();
GridBagLayout gbLayout = new GridBagLayout();
BorderLayout borderLayout = new BorderLayout();
GridBagConstraints gbc = new GridBagConstraints();
int fnh = 8;
JTextField[] jtxt = new JTextField[fnh];
int[] hNum = new int[fnh];
int[] hVal = new int[fnh];
String[] hNam = new String[fnh];
JFrame jfr = new JFrame();
public Test() {
jfr.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
jfr.setTitle("My Alladin Lamp");
jfr.setSize( 200, 80 );
jfr.setVisible( true );
jfr.setLayout( borderLayout );
horseList = new JButton( "Enter Horse Names" );
jfr.add( horseList, BorderLayout.CENTER );
horseList.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
dialog = new JDialog( jfr, "Enter Horse Names", true );
dialog.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
dialog.setSize( 260, 400 );
jpDialog.setLayout( gbLayout );
JLabel label;
String str;
for( int i = 0; i < fnh; i++ )
{
gbc.gridx = 0;
gbc.gridy = i;
str = new Integer( i+1 ) + ".";
label = new JLabel( str );
jpDialog.add( label, gbc );
gbc.gridx = 1;
gbc.gridy = i;
gbc.ipady = 4;
gbc.insets = new Insets(4,0,0,0);
jtxt[i] = new JTextField(15);
jpDialog.add( jtxt[i], gbc );
}
buttonPanel = new JPanel();
ok = new JButton( "OK" );
ok.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
for( int i = 0; i < fnh; i++ ) {
hNam[i] = jtxt[i].getText();
}
dialog.dispose();
}
});
buttonPanel.add( ok );
clear = new JButton ( "CLEAR" );
clear.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent e ) {
for( int i = 0; i < fnh; i++ )
if ( !"".equals( jtxt[i].getText() ) )
jtxt[i].setText( "" );
}
});
buttonPanel.add( clear );
JScrollPane jscr = new JScrollPane( jpDialog );
dialog.add( jscr, BorderLayout.CENTER );
dialog.add( buttonPanel, BorderLayout.SOUTH );
dialog.setVisible( true );
}
});
}
// -------------------------------------------------------------------------
public static void main( String args[] ) {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run()
{
Test test = new Test();
}
});
}
}