我有一个小型的Java SE应用程序,它实际上是一个坐在数据库之上的胖客户端.为了进一步提高我的Java技能,我决定用它来创建一个客户端 - 服务器应用程序.服务器应用程序与数据库通信并处理各种冗长的操作,而客户端应用程序仅接收结果,主要是中等长度和原语的ArrayLists.
为此,我开始阅读RMI并完成了Oracle教程,我发现这个教程非常难以理解甚至开始工作.
还有什么我可以使用而不是RMI,而不必深入研究JavaEE?
首先:我确实阅读了所有其他类似的问题,我看了一下JFreeChart,它似乎是为Java桌面应用程序生成图表的首选武器.它实际上也适合我的需求,但项目似乎已经死了.论坛已经失效,最后一次更新是在2009年.
问题是,有没有其他类似于JFreeChart的库,或者我应该使用JFreeChart,因为它太棒了,我永远不需要来自-now死官方论坛的支持?
您对此的看法将受到高度赞赏.
我正在生成一个文档,如下面的代码所示,除了表格的内容,这些内容各不相同.我需要做的是确保此表的大小不会超过一页,无论单元格中的内容量如何.有办法吗?
import com.itextpdf.text.Phrase; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import java.awt.Desktop; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;Run Code Online (Sandbox Code Playgroud)public void createTemplate() throws DocumentException, FileNotFoundException, IOException{ String TARGET = System.getProperty("user.home")+"\temp.pdf";
Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(TARGET)); document.open();PdfPTable table = new PdfPTable(7); for (int i = 0; i < 105; i++) { Phrase p = new Phrase("some text"); PdfPCell cell = new PdfPCell(); cell.addElement(p); table.addCell(cell); } table.setTotalWidth(PageSize.A4.getWidth()-10); table.setLockedWidth(true); PdfContentByte canvas = …
我目前正在阅读JavaEE7的教程,目前的章节是JSF/PrimeFaces.我需要为删除操作添加一个确认对话框,页面渲染正常.当我按下commandButton(第14行)时,actionListener会触发,但confirm.show()会在Web控制台中产生错误:"引用错误:未定义确认"并且confirmDialog不会呈现.据我了解,"widgetVar =确认"是定义.想知道我做错了什么.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<body>
<f:view contracts="#{view.locale.language}">
<ui:composition template="/template.xhtml">
<ui:define name ="content">
<h1>#{msg['listCampaigns.my_campaigns']}</h1>
<h:form>
<p:dataTable value="#{campaignListProducer.campaigns}" var="campaign">
<p:column>
<p:commandButton onclick="confirmation.show()" actionListener="#{listCampaignsController.doDeleteCampaign(campaign)}" icon="ui-icon-close" />
</p:column>
<p:column>
<f:facet name="header">#{msg['listCampaigns.name']}</f:facet>
<h:outputText value="#{campaign.name}" />
</p:column>
<p:column>
<f:facet name="header">#{msg['listCampaigns.target_amount']}</f:facet>
<h:outputText value="#{campaign.targetAmount}">
<f:convertNumber type="currency" currencyCode="EUR" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">#{msg['listCampaigns.donated_so_far']}</f:facet>
<h:outputText value="#{campaign.amountdonatedSoFar}">
<f:convertNumber type="currency" currencyCode="EUR" />
</h:outputText>
</p:column>
<p:column>
<p:commandLink value="#{msg['listCampaigns.edit']}" ajax="false" action="#{listCampaignsController.doEditCampaign(campaign)}">
</p:commandLink>
</p:column>
<p:column>
<p:commandLink value="#{msg['listCampaigns.list_donations']}" ajax="false" action="#{listCampaignsController.doListDonations(campaign)}">
</p:commandLink>
</p:column>
<p:column>
<p:commandLink value="#{msg['listCampaigns.form']}" ajax="false" action="#{listCampaignsController.doEditDonationForm(campaign)}">
</p:commandLink>
</p:column>
</p:dataTable>
<p:commandButton …Run Code Online (Sandbox Code Playgroud) 我有一个小应用程序,通过JPA从MySQL DB生成统计图表.要选择要在统计信息中包含哪些数据库组件,我已安装了2个JComboBox.第一个JComboBox使用Category1的元素填充,第二个JComboBox使用Category2中的元素填充,Category2是Category1的子类别.我想要做的是只使用链接到JComboBox1中的选择的Category2元素填充JComboBox2.
示例:Category1是汽车品牌,Category2是型号; 我希望JComboBox2只显示所选品牌的型号,现在它显示每个品牌的每个可用型号.
我使用以下行将控制台输出重定向到文件:
PrintStream stream = new PrintStream("console.log");
System.setOut(stream);
Run Code Online (Sandbox Code Playgroud)
现在,文件被覆盖与应用程序的每次启动,从而失去了此前的所有条目,但我倒是喜欢它的每一个会话添加到持久的控制台日志文件.可能吗 ?
我将菜单添加到工具栏中,如下所示:
JMenuBar menu = new JMenuBar();
JMenu actions = new JMenu("Aktionen");
Icon menuIcon = ImageUtilities.loadImageIcon("pathToIcon", true);
actions.setIcon(menuIcon);
// Add
JMenuItem addItem = new JMenuItem("Add");
Icon addIcon = ImageUtilities.loadImageIcon("pathToIcon", true);
addItem.setIcon(addIcon);
addItem.setToolTipText("Add new Item");
addItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AddItemAction someAction = new AddItemAction();
someAction.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null) {
// Foo
});
}
});
menu.add(actions);
actions.add(addItem);
toolbar.addSeparator();
toolbar.add(menu);
Run Code Online (Sandbox Code Playgroud)
基本上,它工作正常.但是,它从不显示工具提示("添加新项").任何提示?
编辑:以防万一有相同问题的人偶然发现:这是L&F,因为我应该从一开始就怀疑.它有一个显示JMenuItems工具提示的属性; 它默认为false.
我想在用户通过我的表单中的 JTextFields 和 JSpinners 选项卡时实现自动选择。为此,我正在使用此侦听器:
public class AutoSelect implements FocusListener {
@Override
public void focusGained(final FocusEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (e.getSource() instanceof JTextField) {
try {
JTextField t = (JTextField) e.getComponent();
t.selectAll();
} catch (ClassCastException ex) {
//
}
}else if (e.getSource() instanceof JSpinner){
JSpinner spinner = (JSpinner)e.getComponent();
JTextField tf = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
tf.selectAll();
}
}
});
}
@Override
public void focusLost(FocusEvent e) {
//
}
}
Run Code Online (Sandbox Code Playgroud)
只有它对我的微调器不起作用。事件被触发,正确的行被执行,什么也没发生。我怀疑我没有正确使用 .getTextField()。有没有人对此有一个可行的解决方案?
我使用以下方法为我的工作表定义单元格样式。然后我cell.setCellStyle(XSSFCellStyle style)用来将它们分配给不同的单元格。然而,虽然对齐方式和背景颜色分配正确,但字体大小和字体强调(粗体、常规)却没有。所有单元格都有 11 点粗体。我想知道我的错误在哪里。
private void createStyles() {
ueberschrift = workbook.createCellStyle();
ueberschrift.setAlignment(HorizontalAlignment.LEFT);
ueberschrift.getFont().setFontHeightInPoints((short) 25);
ueberschrift.getFont().setBold(true);
header = workbook.createCellStyle();
header.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
header.setFillPattern(FillPatternType.SOLID_FOREGROUND);
header.setAlignment(HorizontalAlignment.CENTER);
header.getFont().setFontHeightInPoints((short)11);
standard_text = workbook.createCellStyle();
standard_text.setAlignment(HorizontalAlignment.RIGHT);
standard_text.getFont().setFontHeightInPoints((short) 11);
standard_int = workbook.createCellStyle();
standard_int.setDataFormat(
workbook.createDataFormat().getFormat("0.0"));
standard_int.setAlignment(HorizontalAlignment.RIGHT);
standard_int.getFont().setFontHeightInPoints((short)11);
standard_time = workbook.createCellStyle();
standard_time.setDataFormat(workbook.createDataFormat().getFormat("# ?/?"));
standard_time.setAlignment(HorizontalAlignment.RIGHT);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试以用户选择一行时加载另一个页面的方式设置 a。该行return Pages.EDIT_ITEM已执行但没有任何反应,没有异常或错误,什么也没有。我什至可以Pages.EDIT_ITEM通过输入 URL 在浏览器中访问,但不知何故,让支持 bean 打开页面不起作用。
我的数据表:
<p:dataTable id="categoriesTable" value="#{category.items}" var="item" selectionMode="single" rowKey="#{item.id}" >
<p:commandButton id="toggler" type="button" value="Columns" style="float:right" />
<p:ajax event="rowSelect" listener="#{listCategoriesController.onRowDblClick}" />
<p:columnToggler datasource="categoriesTable" trigger="toggler" />
<p:column headerText="#{msg['addItem.internal_id']}" sortBy="#{item.internalId}" filterBy="#{item.internalId}" filterMatchMode="contains" >
<h:outputText value="#{item.internalId}" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
我的支持豆:
package de.rcwgmbh.inventory.controller;
import de.rcwgmbh.inventory.data.CategoryProducer;
import de.rcwgmbh.inventory.data.ItemProducer;
import de.rcwgmbh.inventory.model.Category;
import de.rcwgmbh.inventory.model.Item;
import de.rcwgmbh.inventory.services.ItemService;
import java.io.Serializable;
import java.util.List;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.TabChangeEvent;
import …Run Code Online (Sandbox Code Playgroud) 以下行应该保存一个新项目并重定向到另一个页面.到目前为止,它正确保存,但它没有重定向.没有错误或警告.
<p:commandButton id="savebutton" ajax="false" value="#{msg['addCategory.save']}" actionListener="#{addCategoryController.doSave()}" />
Run Code Online (Sandbox Code Playgroud)
代码背后:
public String doSave(){
categoryAddEvent.fire(categoryProducer.getSelectedCategory());
return Pages.LIST_CATEGORIES;
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,第一行正确执行,第二行似乎没有做任何事情.我有什么想法可能做错了吗?
java ×8
primefaces ×3
swing ×3
jsf ×2
apache-poi ×1
focus ×1
itext ×1
jcombobox ×1
jfreechart ×1
jmenu ×1
jmenuitem ×1
jsf-2 ×1
jspinner ×1
navigation ×1
rmi ×1
tooltip ×1