当前位置: 首页 > 面试题库 >

JButton需要更改JTextfield文本

贺高飞
2023-03-14
问题内容

这是功课。入门Java类。仍然把我的头缠在这东西上。

该项目是要建立一个库存管理系统。

除了如何使此按钮更改JTextField中的文本外,我已经弄清楚了一切。它需要从产品阵列(在本例中为DVD)中添加信息。这本书讨论了管理诸如JTextField的字体,位置和状态之类的不同方法,但是没有涉及格式化或调用文本的方法。

这是我要使用JTextArea进行操作的示例。从本质上讲,这就是我想对JTextField进行的操作。

   ...
    // setup the interface

 JPanel panel = new JPanel();
 txt = new JTextArea(15,40);
 txt.setEditable(false);//user shouldn't change it
 panel.add(txt);

 JButton next = new JButton("Next");

 panel.add(next);

 getContentPane().add(panel);

 displayDVD();
 }
 // view software
 public void displayDVD() {
       txt.setText("DVD Details:\n");
    txt.append("Item number: " + inv.get(currentDisplay).getItem() + "\n");
    txt.append("DVD name: " + inv.get(currentDisplay).getName() + "\n");
    txt.append("Units in stock: " + inv.get(currentDisplay).getUnits() + "\n");
    txt.append("Price: $" +                                              
       String.format("%.2f",inv.get(currentDisplay).getPrice()) + "\n");
    txt.append("Total value: $" +                             
       String.format("%.2f",inv.get(currentDisplay).value()) + "\n");
    txt.append("Fee: $" + String.format("%.2f",inv.get(currentDisplay).fee()) + "\n\n");

    txt.append("Total value: $" + String.format("%.2f",inv.value()));
 }

这是到目前为止我的实际代码

// GUI with navigation and file manipulation buttons
import javax.swing.*; // provides basic window features
import java.awt.event.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;

public class AppGUI extends JFrame 
{
   private Inventory inv;    
 private int currentDisplay = 0;

   private JPanel topButtonJPanel;
 private JButton topButtons[];

 private JPanel labelJPanel;
 private JLabel labels[];

 private JPanel fieldJPanel;
 private JTextField fields[];

   private JPanel buttonJPanel;
 private JButton buttons[];

   // LabelFrame constructor adds JLabels to JFrame
   public AppGUI()
   {
      super( "Inventory Program v.5" );
      setLayout( new BorderLayout() ); // set frame layout
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// quit if the window is closed

  // initialize values
  RatedDVD d1 = new RatedDVD(1, "The Invisible Man", 0, 4999.99, "PG");
  RatedDVD d2 = new RatedDVD(2, "The Matrix", 1, 13.01, "PG13");
  RatedDVD d3 = new RatedDVD(3, "Se7en", 7, 11.11, "R");
  RatedDVD d4 = new RatedDVD(4, "Oceans Eleven", 11, 9.02, "PG13");
  RatedDVD d5 = new RatedDVD(5, "Hitch Hikers Guide to the Galaxy", 42, 10.00, "G");

  // create inv and enter values
  inv = new Inventory();
  inv.add(d1);
  inv.add(d2);
  inv.add(d3);
  inv.add(d4);
  inv.add(d5);

  inv.sort();

  topButtons = new JButton[ 6 ]; // create topButtons array
  topButtonJPanel = new JPanel(); // set up panel
  topButtonJPanel.setLayout( new GridLayout( 1, topButtons.length, 2, 2 ) );
  topButtons[0] = new JButton( "Load file" );
  topButtons[1] = new JButton( "Add" );
  topButtons[2] = new JButton( "Modify" );
  topButtons[3] = new JButton( "Delete" );
  topButtons[4] = new JButton( "Search" );
  topButtons[5] = new JButton( "Save" );

  for(int count=0;count<topButtons.length;count++){topButtonJPanel.add(topButtons[count]);}
  //add( topButtonJPanel, BorderLayout.NORTH ); // this is for next weeks assignment

  labels = new JLabel[8];
  labelJPanel = new JPanel();
  labelJPanel.setLayout( new GridLayout( labels.length, 1 ));
  labels[0] = new JLabel( "Item ID" );
  labels[1] = new JLabel( "Name" );
  labels[2] = new JLabel( "Rating" );
  labels[3] = new JLabel( "# in Stock" );
  labels[4] = new JLabel( "Price" );
  labels[5] = new JLabel( "Restocking Fee" );//[DEBUG] ref actual Variable
  labels[6] = new JLabel( "Inventory Value with Fee (5%)" );
  labels[7] = new JLabel( "Total Value with Fee(for all items)" );

  for(int count=0;count<labels.length;count++){labelJPanel.add(labels[count]);}
  add( labelJPanel, BorderLayout.WEST );

  fields = new JTextField[8];
  fieldJPanel = new JPanel();
  int spaces = 28;
  fieldJPanel.setLayout( new GridLayout( labels.length, 1 ));
  fields[0] = new JTextField( "", spaces );
  fields[1] = new JTextField( "", spaces );
  fields[2] = new JTextField( "", spaces );
  fields[3] = new JTextField( "", spaces );
  fields[4] = new JTextField( "", spaces );
  fields[5] = new JTextField( "", spaces );
  fields[6] = new JTextField( "", spaces );
  fields[7] = new JTextField( "", spaces );

  for(int count=0;count<fields.length;count++)
  {
   fields[count].setEditable( false );
   fieldJPanel.add(fields[count]);
  }
  add( fieldJPanel, BorderLayout.EAST );

  buttons = new JButton[ 5 ]; // create buttons array
  buttonJPanel = new JPanel(); // set up panel
  buttonJPanel.setLayout( new GridLayout( 1, buttons.length, 2, 2 ) );
  buttons[0] = new JButton( "First" ); 
  buttons[0].addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (currentDisplay != 0)currentDisplay = 0; //advance to the end
    }
   });
  buttons[1] = new JButton( "Prev" );
  buttons[1].addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (currentDisplay != 0)currentDisplay--; //advance to the end
     else currentDisplay = (inv.size()-1); 
    }
   });
  Icon bug1 = new ImageIcon( getClass().getResource( "bug1.gif" ) );
  buttons[2] = new JButton( bug1 );
  buttons[3] = new JButton( "Next" );
  buttons[3].addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (currentDisplay < inv.size()-1)currentDisplay++; //advance to the end
     else currentDisplay = 0;    stkover
   }}); 
  buttons[4] = new JButton( "Last" );
  buttons[4].addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (currentDisplay != inv.size()-1)currentDisplay = inv.size()-1; //advance to the end
     else currentDisplay = (inv.size()-1); 
    }
   });

  for(int count=0;count<buttons.length;count++){buttonJPanel.add(buttons[count]);}
  add( buttonJPanel, BorderLayout.SOUTH );
 }// end method

}// end class AppGUI

任何提示提示或微调表示赞赏。不过请不要为我全部。


问题答案:

您向按钮添加了一个动作侦听器(以便它将侦听按钮动作(单击))。然后对该动作进行编程以更改TextField值。

final JButton    aButton    = ...;
final JTextField aTextField = ...;
final String     aNewText   = "New TextField Value";

aButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        aTextField.setText(aNewText);
    }
});

请注意,使用“ actionPerformed”访问的变量必须是最终变量(字段除外)。

希望这可以帮助。



 类似资料:
  • 问题内容: 我创建了一个扩展JDialog的类,其中有一些复选框和3个按钮:接受,取消和全选。 当用户单击全选时,应选中每个复选框,如果再次单击,则应取消选中每个复选框。效果很好,但我还希望按钮的文本在“全选”和“全选”之间切换。我在这里遇到了麻烦,因此当用户单击按钮并将文本更改为“取消全选”时,该按钮消失了。 我在这里将类简化为最简单的形式: 我看不出有什么问题。有什么帮助吗? 问题答案: 该按

  • 问题内容: 我正在编写一个简单的扫雷游戏,现在可以运行,但是我正在处理一些漂亮的细节,例如使每个数字使用不同的颜色。 尝试在上设置文本颜色时,我总是遇到错误。我可以很容易地更改文本和背景,但是不能专门更改文本颜色。 导致一切混乱的部分是: 由于某种原因,我的错误是: 每当我尝试编译时都会发生这种情况,但是当我将其更改为说而不是正常工作时,就会发生这种情况。 问题答案: 对于JButton未定义。要

  • 问题内容: 嗨,我非常需要一些帮助,我已经在jbutton启用之前搜索了有关要填充的Jtextfield的文档,大多数人都使用DocumentListener来确定是否填充了Jtextfield。我尝试了DocumentListener,它可以工作,但是我想要的是所有Jtextfield都不能为空,然后Jbutton启用,这是我的代码。 问题答案: 表示所有字段必须为空。有时您需要大声朗读此逻辑…

  • 问题内容: 我有一个Swing JButton,我的项目也使用了以下代码: 现在,当尝试使用一个按钮更改背景时,它不会变成红色,只有边框变成红色。 在仍用于其余组件/项目时,如何将背景变为红色? 问题答案: 看一下错误4880747:XP L&F:REGRESSION:JButton上的setBackground设置Windows XP中的边框颜色 。评估部分指出: 更改按钮的外观总是会导致与当前

  • 我在读关于Android编程中的TextWatcher的文章。我无法理解和之间的区别。 虽然我提到了TextWatcher的onTextChanged、beforeTextChanged和postTextChanged之间的差异,但我仍然无法想到需要使用而不是的情况。

  • 问题内容: 我最近有一个关于如何在另一个类的主方法中打开登录面板的问题。因为我还没有在Swing中上过任何课(仅是基本的Java编程),所以我已经偶然发现了另一个问题。 我如何检测用户是否按下了JPanel中的按钮并使它执行某项操作。 例如:用户按下了登录-> if(textfield1.getText()==“ user”){打开另一个JFrame}->等等。 这是我的主要代码: 这是Login