gpt4 book ai didi

java - JButton 需要更改 JTextfield 文本

转载 作者:行者123 更新时间:2023-11-29 08:19:30 25 4
gpt4 key购买 nike

这是作业。开始 Java 类(class)。仍然围绕着这些东西。

该项目是制作一个库存管理系统。

除了如何让这个按钮更改 JTextField 中的文本之外,我已经想出了所有的事情。它需要从一系列产品(在本例中为 DVD)添加信息。该书讨论了管理 JTextField 的字体、位置和状态等内容的不同方法,但不包括格式化或调用文本方法。

这是我想使用 JTextArea 执行的操作的示例。这基本上就是我想用我的 JTextFields 做的。

   ...
// 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

任何提示技巧或轻推表示赞赏。请不要为我做这一切。

最佳答案

您向按钮添加一个 Action 监听器(以便它会监听按钮 Action (单击))。然后对该操作进行编程以更改 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”中访问的变量必须是最终的(字段除外)。

希望这对您有所帮助。

关于java - JButton 需要更改 JTextfield 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1386782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com