私の問題は私のJTextFieldの-setColumns(int型)のJTextField - setColumns()メソッドは、私のために働いていない
ということです "field1.setColumns(5);"
...は機能しません。私はそのレイアウトマネージャの問題を推測しています。しかし、私はエクササイズブックから学んでいます。私が知っている唯一のレイアウトは、flowLayout、borderLayout、およびgridlayoutです。
このコードを簡単に説明すると、「field2」が(Enterキーを押して)ActionEventをトリガするたびに、「field1」はサイズを変更する必要があります。
"actionPerformed"に "System.out.println(" ActionEvent detected ")を配置して、アクションイベントが発生していることを証明しました。問題はありません。しかし、getColumnという正しい値が5の正しい値を示しています...実行時にサイズが視覚的に変化しないだけでなく、
私は誰かが問題を説明できると思っていました。これらの本の演習に取り組むの全体の目的である、私が学ぶのを助けるために。
包みなさいその重要だろう、私はNetBeansでコーディングしています。助けを事前に感謝を。
public class Exercise13_11 extends JFrame implements ActionListener
{
private JTextField textField1, textField2;
private JLabel label1, label2;
private JRadioButton rButton1, rButton2, rButton3;
public static void main(String[] args)
{
JFrame frame = new Exercise13_11();
frame.setTitle("Exercise 13.11");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450, 200);
frame.setVisible(true);
}
public Exercise13_11()
{
// North Panel aligned and filled.
JPanel northPanel = new JPanel();
northPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
northPanel.add(label1 = new JLabel("Text Field"));
northPanel.add(textField1 = new JTextField(20));
northPanel.setToolTipText("Demonstrate JTextField");
getContentPane().add(northPanel, BorderLayout.CENTER);
// South panel now being filled...
JPanel southPanel = new JPanel();
southPanel.setLayout(new FlowLayout());
JPanel alignmentPanel = new JPanel();
alignmentPanel.setBorder(
new javax.swing.border.TitledBorder("Horizontal Alignment"));
alignmentPanel.add(rButton1 = new JRadioButton("Left"));
alignmentPanel.add(rButton2 = new JRadioButton("Center"));
alignmentPanel.add(rButton3 = new JRadioButton("Right"));
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(rButton1);
buttonGroup.add(rButton2);
buttonGroup.add(rButton3);
JPanel columnPanel = new JPanel();
columnPanel.setBorder(new javax.swing.border.EtchedBorder());
columnPanel.setLayout(new FlowLayout());
columnPanel.add(label2 = new JLabel("Column Size"));
columnPanel.add(textField2 = new JTextField(10));
southPanel.add(alignmentPanel);
southPanel.add(columnPanel);
getContentPane().add(southPanel, BorderLayout.SOUTH);
textField1.addActionListener(this);
rButton1.addActionListener(this);
rButton2.addActionListener(this);
rButton3.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == textField1)
{
textField1.setColumns(5);
}
else if (e.getSource() == rButton1)
textField1.setHorizontalAlignment(textField1.LEFT);
else if (e.getSource() == rButton2)
textField1.setHorizontalAlignment(textField1.CENTER);
else if (e.getSource() == rButton3)
textField1.setHorizontalAlignment(textField1.RIGHT);
}
}
TextFieldの列サイズを変更した後に、frame.repaint()を追加してみてください。テキストフィールドが変更されたことを気付かないFrameの問題かもしれないので、それを再描画する必要はありません。 – aoi222
残念ながら、それはうまくいかなかった...しかし、あなたの意見ではない。 – cworner1
@ cworner1、それは動作しましたか? – mre