Моя проблема в том, что мой JTextField -setColumns (int)
"field1.setColumns (5);"
... не работает.Я предполагаю, что это проблема менеджера компоновки.Тем не менее, я учусь из тетради.Единственные известные мне макеты - это flowLayout, borderLayout и gridlayout.
Чтобы кратко объяснить этот код, всякий раз, когда «field2» запускает ActionEvent (нажатием клавиши ввода), «field1» должен изменять размер.
Я поместил «System.out.println (« Обнаружен ActionEvent ») в« actionPerformed », чтобы доказать, что actionevent запускается, так что это не проблема. Я даже напечатал»field1.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);
}
}