我有一个JLabel包含GUI中某个位置的可变文本.问题是文本显示在所在空间的底部JLabel.这不会向最终用户传达关于GUI的其他内容的相关信息.相反,我需要将文本JLabel打印在垂直轴的中间JLabel.我的代码的简化版本如下.任何人都可以告诉我如何改变它,使文本显示在垂直轴的中间而不是底部?
Main.java:
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Main");
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new VerticalLabel("Hello"));
Dimension prefSize = new Dimension(400, 300);
frame.setPreferredSize(prefSize);
frame.setMinimumSize(prefSize);
frame.pack();
frame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
VerticalLabel.java:
import javax.swing.*;
import java.awt.*;
import javax.swing.border.EtchedBorder;
public class VerticalLabel extends JLabel {
public VerticalLabel(String labelText) {
Dimension myDim = new Dimension(15, 250);
this.setPreferredSize(myDim);
this.setHorizontalAlignment(LEFT);
this.setVerticalAlignment(CENTER);
this.setText(labelText);
this.setVerticalTextPosition(CENTER);
this.setUI(new VerticalLabelUI(false));
this.setBorder(new EtchedBorder());
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个ESRI形状文件,其中包含大约150个连续地理区域(多边形)的库,它们共同构成一个地理区域.我还有一个包含60,000个事件的csv文件,每个事件都有一组唯一的x,y点坐标.csv文件中的每个事件都发生在shape文件中150个多边形中的一个(且只有一个)内,但我不知道与每个记录关联哪个多边形.因此,我需要编写一个算法,找出多边形的身份,其中每个事件发生在60,000个事件中.我需要编写的算法输出将使我能够随后计算统计数据,例如特定多边形(地理区域)内发生的特定类型事件的可能性.
(当然,形状文件不仅仅是一个文件.它是一个目录,包含8个文件扩展名的文件,包括.dbf,.prj,.qix,.sbn,.sbx,.shp,.xml和.shx .)
我没有ArcGIS许可证.我在http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api找到了文件地理数据库API,但我不确定它是否是正确的工具集,而且我也无法找到示例代码.
任何人都可以向我展示一些代码,用于查找哪些多边形(来自形状文件)中的每一个(来自外部数据源,如csv文件)都属于哪个?
此外,我需要指定我需要能够为每个事件的csv记录添加相关多边形的标识的特定代码.因此,仅仅绘制地图上的点以显示哪些多边形包含事件是不够的.我根本不需要可视化这些数据.相反,我需要的是能够将多边形id标记到csv文件中的每个事件记录,以便我可以进行后续的非直观的数值分析.
还将赞赏有关此主题的文章,教程和其他资源的链接.我想这是人们每天都在解决的一个问题,所以如果一个人知道如何找到它,就必须有一个既定的代码库.我每天都用Java编写代码,因此首选Java解决方案.但是,如果你有一个用不同语言编写的好代码示例,我可以从另一种语言中移植一些东西.
*编辑:*
我根据Spacedman的建议尝试了以下R代码,我收到以下错误消息:
> myCSV <- read.csv(file="myCSVFile.csv",head=TRUE,sep=",")
> pts = SpatialPoints(myCSV)
> ZipCodes = readShapeSpatial("path/myshapefile.shp")
> overlay(myCSV,ZipCodes)
Error in function (classes, fdef, mtable) : unable to find an inherited method for function "overlay", for signature "data.frame", "SpatialPolygonsDataFrame"
>
Run Code Online (Sandbox Code Playgroud)
请参阅下面的其他评论.
第二次编辑:
我最终使用的R代码是:
myCSV <- read.csv(file="myData.csv",head=TRUE,sep=",")
pts = SpatialPoints(myCSV)
ZipCodes = readShapeSpatial("myPath/ZipCodes.shp")
write.csv(ZipCodes$ZIPCODE[overlay(pts,ZipCodes)], "ZipMatches.csv", quote=FALSE, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
注意:我必须使用:
summary(ZipCodes)
Run Code Online (Sandbox Code Playgroud)
找到包含邮政编码编码的字段的名称.在我运行摘要(ZipCodes)之前,脚本只是输出每个邮政编码的索引而不是邮政编码本身.
我有一个类需要返回各种类型的多个数据对象,例如ArrayList<Integer>和数组double[].由于java只允许给定方法返回一个对象,我试图将各种数据对象捆绑到一个ArrayList中.但是,有两个问题:
我想出的代码无法读取ArrayList的每个索引中的对象类型.
具体来说,在下面的ListOfObjects.java中,Eclipse给出了一条错误消息,指出Type mismatch: cannot convert from Object to ArrayList<Integer>该行myAL1=dataHolder.get(0);,然后是其后三个其他get语句的类似错误消息.
我不知道指定哪种类型作为ArrayList的数据类型.
我的代码在下面的两个文件中.
任何人都可以告诉我如何解决它,以便解决这两个问题?
我需要能够随后将myAL1用作ArrayList,并将myDBL1,mtDBL2和myDBL3用作double [].
ListOfObjects.java
import java.util.ArrayList;
public class ListOfObjects {
ArrayList<Integer> myAL1 = new ArrayList<Integer>();
double[] myDBL1 = new double[25];
double[] myDBL2 = new double[25];
double[] myDBL3 = new double[25];
public static void main(String[] args) {
}
public void myMethod() {
AssembleListOfObjects …Run Code Online (Sandbox Code Playgroud) 我有一个带有下拉菜单的对话框,如下所示:
Object[] possibilities = {"1", "2", "3", "4"};
ImageIcon icon = new ImageIcon("images/middle.gif");
int i = Integer.parseInt((String)JOptionPane.showInputDialog(pane,"How Many Channels:","Reset Visible Channels",
JOptionPane.PLAIN_MESSAGE,icon,possibilities,"1"));
Run Code Online (Sandbox Code Playgroud)
问题是它只允许您选择一个选项。相反,我希望用户能够从对话框中给出的列表中选择多个选项。类似于以下内容:
Object[] possibilities = {"apples", "oranges", "lemons", "grapes"};
ImageIcon icon = new ImageIcon("images/middle.gif");
String s = (String)what do i put here instead of JOptionPane.showInputDialog(); ?
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何更改此代码以使其符合我的要求?
很高兴知道我的各种格式选项是什么。我真的很感激任何关于该主题的好文章的链接。我从谷歌搜索中找到的文章信息量并不大。我可能使用了错误的关键词。
我刚安装了Springsource Tool Suite作为eclipse kepler的插件.我需要用它开发数据库驱动的Web应用程序.我以为我可以使用hibernate来做到这一点,但是我发现用于hibernate的eclipse STS插件似乎只适用于jboss服务器.我想使用tomcat 7服务器.有人可以提出一个使用STES eclipse和tomcat的hibernate的好方法吗?或者除了eclipse之外还有更好的方法与STS eclipse和tomcat进行数据库集成吗?下载工具的链接,以及每个工具的当前版本的现代教程,将不胜感激.我刚刚使用STS eclipse kepler中的模板创建了一个新的Spring MVC项目.拥有适用于该工具集的教程和工具会很不错.即使是一个完全工作的数据库驱动的Web应用程序示例代码也要研
我必须将管道分隔数据转换为制表符分隔或逗号分隔格式.我在java中编写了以下方法:
public ArrayList<String> loadData(String path, String fileName){
File tempfile;
try {//Read File Line By Line
tempfile = new File(path+fileName);
FileInputStream fis = new FileInputStream(tempfile);
DataInputStream in = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int i = 0;
while ((strLine = br.readLine()) != null) {
strLine.replaceAll("\\|", ",");
cleanedData.add(strLine);
i++;
}
}
catch (IOException e) {
System.out.println("e for exception is:"+e);
e.printStackTrace();
}
return cleanedData;
}
Run Code Online (Sandbox Code Playgroud)
问题是结果数据仍然是管道分隔的.任何人都可以告诉我如何修复上面的代码,以便它返回制表符分隔或逗号分隔数据?
我正在开发一个访问数据库,其中包含一些仅用于数据输入的表单.问题是,当我打开任何这些表单时,访问会在基础表中创建一个新条目,包括递增基础表的自动编号主键,并且即使用户选择不创建记录,自动编号也会保持递增数据库.这意味着由于用户在不提交更改的情况下打开和关闭表单的所有时间,实际表中的自动编号序列中存在间隙.
我在beforeupdate方法中使用以下代码以允许用户丢弃错误数据:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Provide the user with the option to save/undo
'changes made to the record in the form
If MsgBox("Data has been entered into this form." _
& vbCrLf & vbCrLf & "Do you want to save this data?" _
, vbYesNo, "Changes Made...") = vbYes Then
DoCmd.Save
Else
DoCmd.RunCommand acCmdUndo
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我曾想过使用beforeinsert事件,但是在使用beforeinsert时打开表单时遇到了问题.
有人可以告诉我如何进行设置,以便不会在自动编号值的序列中创建这些间隙吗?该数据库可能由10个并发用户使用.
在ms access 2010中,如何将子表单的高度和宽度设置为可用屏幕空间的百分比?特别是,我在数据库中标记为"Tab A"的嵌套导航子表单,我上传到此文件共享URL:http: //jmp.sh/v/HGctZ4Ru74vDAjzN43Wq
在文件共享链接的数据库中,具有不同屏幕分辨率设置的不同用户具有导航子表单,其中选项卡A以所有不同的大小显示,包括一些子表单是可用屏幕空间的可笑小百分比.导航子窗体的详细信息部分的高度设置为5.5542英寸.有没有办法设置它,以便高度是子窗体顶部下方可用空间的90%?我还希望标记为"Tab 1"的子窗体的宽度为左边缘右边的90%.在java中,使用偏移和计算宽度很容易.我似乎无法找到如何在Access 2010中执行相对维度的说明.
谷歌搜索该主题似乎没有产生任何解决方案,我想通过在高度设置中添加一两英寸来避免搞砸所有其他用户的屏幕.
名为的自定义类MyCustomClass具有其属性joda LocalDateTime。我需要创建一个java.util.Comparator类,MyCustomClass以按其TimeStamp属性比较实例,该属性的类型为LocalDateTime。我已经阅读了有关此内容的几篇文章(包括这一篇文章),并且尝试了所有方法,但是答案中显示的所有方法似乎都不起作用。例如,以下几种方法会引发编译错误:
import java.time.temporal.ChronoUnit;
import java.util.Comparator;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Period;
import my.app.model.MyCustomClass;
public class MyCustomClassComparator implements Comparator<MyCustomClass>{
public int compare(MyCustomClass mcc1, MyCustomClass mcc2) {
//this first attempt throws a return type error for the method.
return Period.fieldDifference(mcc2.getTimestamp(), mcc1.getTimestamp());
//This next attempt says that LocalDateTimes are not valid arguments
Duration.between(mcc2.getTimestamp(), mcc1.getTimestamp());
//The next approach also says LocalDateTimes are not valid arguments.
DateTime.parse(mcc2.getTimestamp()), mcc1.getTimestamp()).getSeconds();
//This boilerplate approach …Run Code Online (Sandbox Code Playgroud) CentOS 7 的全新安装需要全新安装 PostgreSQL,并具有新用户和新角色。我正在按照本教程中描述的步骤来实现此目标。但是,当我键入 时,终端没有提供教程承诺的交互式菜单createuser -interactive。相反,我收到以下空白提示:
[this_centos_user@localhost ~]$ sudo -i -u postgres\n[sudo] password for this_centos_user:\n-bash-4.2$ createuser \xe2\x80\x93interactive\n-bash-4.2$\nRun Code Online (Sandbox Code Playgroud)\n\n需要输入哪些具体命令才能createuser出现交互界面并让我输入用户名、密码等?
1.) 首先,我使用以下命令安装了 postgresql-server 软件包和“contrib”软件包:
\n sudo yum install postgresql-server postgresql-contrib
2.) 接下来,我创建了一个新的 PostgreSQL 数据库集群:
\n sudo postgresql-setup initdb
sudo vi /var/lib/pgsql/data/pg_hba.conf3.) 然后,我通过键入并更改以下行以包含 md5 而不是 ident 来 设置密码身份验证,编辑 PostgreSQL 基于主机的身份验证 (HBA) 配置:
host all all 127.0.0.1/32 md5\nhost all all ::1/128 md5 \nRun Code Online (Sandbox Code Playgroud)\n\n4.) 保存并退出后vi,我使用以下命令启动并启用了 PostgreSQL: …
java ×5
access-vba ×2
ms-access ×2
swing ×2
vba ×2
arraylist ×1
arrays ×1
centos ×1
centos7 ×1
comparator ×1
delimiter ×1
dialog ×1
eclipse ×1
esri ×1
geocoding ×1
geolocation ×1
geospatial ×1
gis ×1
hibernate ×1
jlabel ×1
jodatime ×1
joptionpane ×1
linux ×1
pipe ×1
postgresql ×1
regex ×1
return ×1
return-type ×1
rhel ×1
spring ×1
spring-mvc ×1
time ×1
tomcat ×1