所以我的GUI有一小段代码:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.BoxLayout;
import javax.swing.JSeparator;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class IPGUI extends JFrame implements ActionListener
{
private static JPanel contentPane;
private static boolean btn1Clicked = false;
private static boolean btn2Clicked = false;
private static boolean btn3Clicked = false;
private static boolean btn4Clicked = false;
//Create the frame
public IPGUI()
{
//Sets frame properties
setTitle("IP Extractor");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 250, 300);
contentPane = new JPanel();
contentPane.setBorder(new …Run Code Online (Sandbox Code Playgroud) 所以在这段代码中:
//Actions performed when an event occurs.
public void actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
//If btnConvertDocuments is clicked, the FileConverter method is called and the button is then disabled [so as to prevent duplicates].
if (command.equals("w"))
{
new Thread(new Runnable()
{
public void run()
{
FileConverter fc = new FileConverter();
}
}).start();
btnConvertDocuments.setEnabled(false);
//Validation message ensuring completion of the step.
JOptionPane.showMessageDialog(this, "Step 1 Complete!", "Validation", JOptionPane.INFORMATION_MESSAGE);
}
Run Code Online (Sandbox Code Playgroud)
在FileConverter方法甚至没有被调用之前,似乎消息对话框窗口弹出方式太快了.我想知道JOptionPane的位置是否正确,或者是否有办法延迟消息直到方法完成处理?
所以我目前正在使用SAX尝试从我正在使用的许多xml文档中提取一些信息.到目前为止,提取属性值非常容易.但是,我不知道如何从文本节点中提取实际值.
例如,在给定的XML文档中:
<w:rStyle w:val="Highlight" />
</w:rPr>
</w:pPr>
- <w:r>
<w:t>Text to Extract</w:t>
</w:r>
</w:p>
- <w:p w:rsidR="00B41602" w:rsidRDefault="00B41602" w:rsidP="007C3A42">
- <w:pPr>
<w:pStyle w:val="Copy" />
Run Code Online (Sandbox Code Playgroud)
我可以通过从val获取值来提取"突出显示"没问题.但是我不知道如何进入该文本节点并获取"Text to Extract".
到目前为止,这是我的Java代码,用于提取属性值...
private static final class SaxHandler extends DefaultHandler
{
// invoked when document-parsing is started:
public void startDocument() throws SAXException
{
System.out.println("Document processing starting:");
}
// notifies about finish of parsing:
public void endDocument() throws SAXException
{
System.out.println("Document processing finished. \n");
}
// we enter to element 'qName':
public void startElement(String uri, String …Run Code Online (Sandbox Code Playgroud) 所以我和朋友正在研究这个项目,我们一直在试图弄清楚如何从XML文件中的单个文本节点中提取值.他能够提出一些代码来提取我们正在寻找的文本节点,但是有一个小问题.当我运行以下代码时,它工作正常,并提取我们需要的...
JAVA CODE
import java.io.File;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Test extends DefaultHandler
{
StringBuffer buffer;
String heading;
boolean inHeading;
public static void main(String[] args)
{
try
{
Test saxNames = new Test();
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(new File("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne.docx - Extracted Items/word/document.xml"), saxNames);
}
catch(Exception e)
{
e.printStackTrace(System.err);
}
}
public void startElement(String uri, String localName, String qName, Attributes attrs)
{
if ("w:pStyle".equals(qName))
{
String val = attrs.getValue("w:val");
if (val.contains("Heading")) …Run Code Online (Sandbox Code Playgroud) 基本上,我有两个哈希图,一个包含以下值:
rId33=image23
rId32=image22
rId37=image2
Run Code Online (Sandbox Code Playgroud)
而另一个包含这些数据:
{image2.jpeg=C:\Documents and Settings\image2.jpeg, image22.jpeg=C:\Documents and Settings\image22.jpeg, image23.jpeg=C:\Documents and Settings\image23.jpeg}
Run Code Online (Sandbox Code Playgroud)
我基本上希望能够遍历第一个地图,找到钥匙的匹配,如果找到匹配,获取相关值,然后查看第二个地图,找到钥匙中的匹配,然后拉出关联value(表示文件路径).
我正在考虑做这样的事情(以下简化)......
String val2 = "rId33";
for (String rID: map.keySet())
{
if (rID.contains(val2))
{
//enter code here
}
}
Run Code Online (Sandbox Code Playgroud)
我正在研究像.getValue之类的东西可用的方法,但我不完全确定如何做到这一点.任何帮助,将不胜感激.提前感谢您的回复.
在Bozho的帮助下编辑代码
else if ("v:imagedata".equals(qName) && headingCount > 0)
{
val2 = attributes.getValue("r:id");
String rID = imageMap.get(val2);
String path = imageLocation.get(rID + ".jpeg");
for (String rels: imageMap.keySet())
{
if (rels.contains(val2))
{
inImage = true;
image docImage = new image();
imageCount++;
docImage.setRelID(val2);
docImage.setPath(path);
addImage(docImage);
}
}
Run Code Online (Sandbox Code Playgroud) 所以我想知道是否有人知道如何从密钥读取多个值,用逗号分隔它们并将它们存储到java中属性文件的arraylist中?
我有一个属性文件,其中包含:
currentProposalsLocation = C:/ Documents and Settings/Intern Project/Extracted Items
keywordsList ="A,B,C,D,E,F"
这是我加载属性文件的代码:
static String proposalsDirectory;
static ArrayList<String> keywordsList = new ArrayList<String>();
private static final String PROP_FILE="C:/Documents and Settings/Intern Project/ipConfig.properties";
public static void readPropertiesFile()
{
try
{
InputStream is = XMLTagParser.class.getResourceAsStream(PROP_FILE);
Properties prop = new Properties();
prop.load(is);
proposalsDirectory = prop.getProperty("currentProposalsLocation");
//?????What to do here????
is.close();
}
catch(Exception e)
{
System.out.println("Failed to read from " + PROP_FILE + " file.");
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我,我真的很感激.
所以我刚刚开始为我的班级学习C语言,而且我一直在研究这项任务,但这部分让我感到困惑.我有一些基本上看起来像的代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
int one = 0;
int two = 0;
char oneWord[100];
char twoWord[100];
printf("Enter a two digit number: ");
scanf("%d%d", &one, &two);
strcpy(firstWord, "Test");
strcpy(secondWord, "Two");
printf("%s", firstWord);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,除了程序的逻辑/目的,我无法弄清楚为什么scanf语句导致无限循环?我确定这是问题的原因,当我评论它并且最终printf声明工作得很好.
我尝试将其更改为scanf("%d,%d", %one, %two),当我在输入中添加逗号时似乎工作正常.但我希望能够取55这样的数字并将其分成2位数.我到底错在了什么?
因此,对于我正在处理的程序,我正在尝试创建一个解析文本文件的方法.使用文本文件中的值,创建一个ArrayList内ArrayList.到目前为止,这是我的代码:
public ArrayList<ArrayList<String>> getRels(String relsFile)
{
String[] currentId;
int i = -1;
ArrayList<ArrayList<String>> relsList = new ArrayList<ArrayList<String>>();
relsList.add(new ArrayList<String>());
try
{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(relsFile);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
while ((strLine = br.readLine()) != null)
{
// Add values to array list
currentId = strLine.split(",");
relsList.get(++i).add(currentId[0]);
//???????????
}
//Close the input stream
in.close();
}
catch (Exception e)
{
System.err.println("Error: …Run Code Online (Sandbox Code Playgroud) 所以我想知道是否有可能将所有控制台输出写入Java之外的单独文件?我知道Printwriter和Filewriter方法.但是,根据我的经验,如果我在一个方法中使用它们,那些将会起作用,但我认为我不能用我现在的代码那样做.以下是我所拥有的......
Java代码
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class XMLTagParser extends DefaultHandler
{
private int i;
public XMLTagParser()
{
traverse(new File("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items"));
}
private static final class SaxHandler extends DefaultHandler
{
private StringBuffer buffer;
private String heading;
private boolean inHeading;
public void startElement(String uri, String localName, String qName, Attributes attrs)
{
if ("w:pStyle".equals(qName))
{
String val = attrs.getValue("w:val");
if (val.contains("Heading"))
{
if (isHeading(val)) …Run Code Online (Sandbox Code Playgroud) 目前,我正在从文本文件中删除一大块数据(段落/字符串)并将其写入新文件.但是,我计划稍后添加一些条件,因此希望能够取出这一块数据并仅将其存储在临时数组中,然后在满足条件时写出文件.但是,我不知道如何在不知道数组大小的情况下将其写入数组.
有没有人有任何想法?
所以这可能是一个奇怪的问题,但我有一个从控制台运行的C#程序,除了一件事以外,现在一切正常.
在我的程序中,我有一段代码如...
loadFile();
foreach(var x in imgSet)
{
//do whatever
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我希望我的整个程序自动化并使用任务调度程序运行,我不希望人工交互.程序loadFile()在控制台中调用该方法就好了,但是在写出该方法的输出后,用户必须按Enter进入该foreach循环.我不知道为什么会这样,并且想知道是否有办法绕过它并使其完全自动化?
这是我目前的计划:
import java.applet.Applet;
import java.awt.Graphics;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JComboBox;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Properties;
public class CodesApplet extends Applet
{
private Properties properties;
private String configFilePath;
private FileInputStream fis;
private String driverName;
private String userName;
private String password;
private String url;
private Connection conn;
private Statement st;
private Timestamp created = new Timestamp(System.currentTimeMillis());
private JComboBox codes1;
private JComboBox codes2;
private JComboBox otherCodes;
public void init()
{
try …Run Code Online (Sandbox Code Playgroud) java ×10
sax ×3
arraylist ×2
swing ×2
xml ×2
xml-parsing ×2
action ×1
applet ×1
arrays ×1
automation ×1
c ×1
c# ×1
c#-4.0 ×1
char ×1
collections ×1
console ×1
constructor ×1
database ×1
delayed-job ×1
file-writing ×1
filewriter ×1
hashmap ×1
iterator ×1
jbutton ×1
joptionpane ×1
loops ×1
map ×1
nested ×1
nested-class ×1
parsing ×1
printwriter ×1
properties ×1
scanf ×1
skip ×1
string ×1
text-files ×1