[英]Trying to disable JButtons when appropriate
該程序讀取數據文件並將內容存儲到向量中。 然后,當用戶單擊下一個和上一個按鈕時,它將在文本字段中顯示每個項目。 我想在顯示第一個項目時禁用previousButton,而在顯示最后一個項目時禁用nextButton。
import java.io.*;
import java.util.Vector;
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import javax.swing.*;
public class choosing_fruit extends JFrame implements ActionListener
{
private JTextField dataItemTextField;
private JButton nextButton, previousButton, closeButton;
private Vector<String> v;
private int current = 0; // index value of current item shown in text field
public static void main(String[] args) throws FileNotFoundException
{
choosing_fruit f = new choosing_fruit();
}
public choosing_fruit()
{
v = new Vector<String>();
nextButton = new JButton(">>");
previousButton = new JButton("<<");
closeButton = new JButton("Close");
dataItemTextField = new JTextField(20);
setLayout(new FlowLayout());
this.add(dataItemTextField);
this.add(previousButton);
this.add(nextButton);
this.add(closeButton);
nextButton.addActionListener(this);
previousButton.addActionListener(this);
closeButton.addActionListener(this);
try
{
Scanner in = new Scanner(new File("fruit.dat"));
String inputLine;
while(in.hasNextLine())
{
inputLine = in.nextLine();
v.add(inputLine);
}
in.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"error");
}
dataItemTextField.setText(v.get(current)); // show 1st item
this.setTitle("Choosing Fruit");
this.pack();
this.setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
if(current > 0)
{
previousButton.setEnabled(true);
}
else
{
previousButton.setEnabled(false);
}
if(current < 5)
{
nextButton.setEnabled(true);
}
else
{
nextButton.setEnabled(false);
}
if(ae.getSource() == nextButton)
{
if(current >= 0)
{
current = current + 1;
dataItemTextField.setText(v.get(current));
System.out.println(current);
}
}
else if(ae.getSource() == previousButton)
{
if(current <= 5)
{
current = current - 1;
dataItemTextField.setText(v.get(current));
System.out.println(current);
}
}
else if(ae.getSource() == closeButton)
{
shutDown();
}
}
private void shutDown()
{
this.dispose();
}
}
更改當前位置后,嘗試更新按鈕的狀態
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == nextButton) {
if (current >= 0) {
current = current + 1;
dataItemTextField.setText(v.get(current));
System.out.println(current);
}
} else if (ae.getSource() == previousButton) {
if (current <= 5) {
current = current - 1;
dataItemTextField.setText(v.get(current));
System.out.println(current);
}
} else if (ae.getSource() == closeButton) {
shutDown();
}
previousButton.setEnabled(current > 0);
nextButton.setEnabled(current < v.size() - 1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.