[英]Storing Strings from JLabel Array to String Array
我正在努力制作一個小型程序,需要執行以下操作:
我被困住了,因為我似乎不知道如何將文本從一個數組轉移到另一個數組。
怎么辦?
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.MenuElement;
public class A {
JFrame frame;
Toolkit toolkit;
JPopupMenu quickMenu;
JTextField field1;
JPanel panel;
ArrayList<JLabel> labelList;
ArrayList<String> stringArray;
String texts;
JLabel label1, label2, label3;
ArrayList<JTextField> fieldList;
int count;
A() {
frame = new JFrame("A class");
panel = new JPanel();
panel.setLayout(new GridLayout(2, 3, 5, 5));
JLabel title1 = new JLabel("Title 1");
panel.add(title1);
setDimm(frame);
quickMenu = new JPopupMenu();
JMenuItem addRow = new JMenuItem("Add row");
JMenuItem removeRow = new JMenuItem("Remove row");
quickMenu.add(addRow);
quickMenu.add(removeRow);
panel.add(quickMenu);
panel.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
quickMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
labelList = new <JLabel>ArrayList();
// ADD ROWS
count = 0;
stringArray = new ArrayList();
addRow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Starting count is: " + count); // check if
// count
JLabel label = new JLabel ("" + count); // starts
// correctly
labelList.add(label); // adds new
// JLabels in
// the labelList
// array
// I suspect the problem is here underneath, not sure how to
// first get the texts inside the arraylist of JLabels and then
// transfer this text to the array of Strings that I want to
// print.
for (int i = 0; i < labelList.size(); i++) {
stringArray.add(labelList.get(i).getText());
}
panel.add(labelList.get(count));
panel.revalidate();
panel.repaint();
count++;
System.out.println("After Click count is: " + count);
System.out.println("Size of JLabel Array labelList is: " + labelList.size());
System.out.println("Size of String Array stringArray is: " + stringArray.size());
System.out.print("The content of the String ArrayList is: " + stringArray);
System.out.println();
System.out.println();
}
});
removeRow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev)
{
/*
* panel.remove(labelList.size() - 1); // Will it delete the
* last JLabel from the panel?
* labelList.remove(labelList.size()-1);
*
*
* panel.revalidate(); panel.repaint(); count--;
*/
System.out.println(count + " and does nothing yet");
}
});
frame.add(panel);
// panel.add(button);
frame.setVisible(true);
}
void setDimm(JFrame frame) {
this.frame = frame;
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.gray);
frame.setSize(800, 600);
toolkit = frame.getToolkit();
Dimension size = toolkit.getScreenSize();
frame.setLocation((size.width - frame.getWidth()) / 2, (size.height - frame.getHeight()) / 2);
}
public static void main(String[] args) {
new A();
}
}
您可以使用以下代碼向ArrayList添加文本:
stringArray.add(labelList.get(i).toString());
將其替換為標簽文本:
stringArray.add(labelList.get(i).getText());
您也不會一直遍歷labellist,僅實例new Label,將其添加到labellist並將label的文本添加到stringlist:
JLabel label = new JLabel("" + count);
// correctly
labelList.add(label); // adds new
// JLabels in
// the labelList
// array
// I suspect the problem is here underneath, not sure how to
// first get the texts inside the arraylist of JLabels and then
// transfer this text to the array of Strings that I want to
// print.
stringArray.add(label.getText());
你好。 我也嘗試過,顯然現在迭代了字符串數組多次。 為了進行調試,我添加了println來知道兩個數組的長度,並且當JLabel數組從1,2,3,4,5正確開始時,字符串1變為1,3,6,10,15。 下面的示例:JLabel Array labelList的大小是:6字符串數組的大小stringArray是:15 ArrayList是:[0,0,1,0,1,2,2,0,1,2,3,0,1,2,3 ,4]。 我已經用此錯誤更新了初始代碼
是的,僅替換此代碼:
for (int i = 0; i < labelList.size(); i++) {
stringArray.add(labelList.get(i).getText());
}
有了這個:
stringArray.add(label.getText());
它由Abra和ZamarianPatrick解決。 如果有人可能正在搜索此解決方案,我將發布代碼。 非常簡單...謝謝大家!!!
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
public class A {
JFrame frame;
Toolkit toolkit;
JPopupMenu quickMenu;
JTextField field1;
JPanel panel;
ArrayList<JLabel> labelList;
ArrayList<String> stringArray;
String texts;
JLabel label1, label2, label3;
ArrayList<JTextField> fieldList;
int count;
A() {
frame = new JFrame("A class");
panel = new JPanel();
panel.setLayout(new GridLayout(2, 3, 5, 5));
JLabel title1 = new JLabel("Title 1");
panel.add(title1);
setDimm(frame);
quickMenu = new JPopupMenu();
JMenuItem addRow = new JMenuItem("Add row");
JMenuItem removeRow = new JMenuItem("Remove row");
quickMenu.add(addRow);
quickMenu.add(removeRow);
panel.add(quickMenu);
panel.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
quickMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
labelList = new <JLabel>ArrayList();
// ADD ROWS
count = 0;
stringArray = new ArrayList();
addRow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Starting count is: " + count); // check if
texts = "" + count; // count
JLabel label = new JLabel(texts); // starts
// correctly
labelList.add(label); // adds new
// JLabels in
// the labelList
stringArray.add(label.getText());
panel.add(labelList.get(count));
panel.revalidate();
panel.repaint();
count++;
System.out.println("After Click count is: " + count);
System.out.println("Size of JLabel Array labelList is: " + labelList.size());
System.out.println("Size of String Array stringArray is: " + stringArray.size());
System.out.print("The content of the String ArrayList is: " + stringArray);
System.out.println();
System.out.println();
}
});
removeRow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev)
{
/*
* panel.remove(labelList.size() - 1); // Will it delete the
* last JLabel from the panel?
* labelList.remove(labelList.size()-1);
*
*
* panel.revalidate(); panel.repaint(); count--;
*/
System.out.println(count + " and does nothing yet");
}
});
frame.add(panel);
// panel.add(button);
frame.setVisible(true);
}
void setDimm(JFrame frame) {
this.frame = frame;
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.gray);
frame.setSize(800, 600);
toolkit = frame.getToolkit();
Dimension size = toolkit.getScreenSize();
frame.setLocation((size.width - frame.getWidth()) / 2, (size.height - frame.getHeight()) / 2);
}
public static void main(String[] args) {
new A();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.