小编dic*_*c19的帖子

局部变量范围的问题.怎么解决?

尝试statemet.executeUpdate()在我的代码中执行时,我收到以下错误:

Local variable statement defined in an enclosing scope must be final or effectively final.
Run Code Online (Sandbox Code Playgroud)

到目前为止这是我的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;.

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class a1 {

    protected Shell shell;
    private Text text;
    private Text text_1;
    private Text text_2;
    private Text text_3;

    /**
     * Launch the application.
     * @param args
     */
    public static void main(String[] args) {
        try { …
Run Code Online (Sandbox Code Playgroud)

java scope

54
推荐指数
2
解决办法
15万
查看次数

在process()调用完成之前执行SwingWorker,done()

我已经和SwingWorker一起工作了一段时间并且最终出现了一种奇怪的行为,至少对我而言.我清楚地了解到,由于性能原因,一次调用中对publish()方法的几次调用是有用的.这对我来说非常有意义,我怀疑SwingWorker会保留某种队列来处理所有调用.

根据教程和API,当SwingWorker结束执行时,doInBackground()正常完成或工作线程从外部取消,然后调用done()方法.到现在为止还挺好.

但是我有一个示例(类似于教程中所示),其中在执行process()方法之后 done()执行了方法调用.由于两个方法都在Event Dispatch Thread中执行,因此我希望done()在所有process()调用完成后执行.换一种说法:

预期:

Writing...
Writing...
Stopped!
Run Code Online (Sandbox Code Playgroud)

结果:

Writing...
Stopped!
Writing...
Run Code Online (Sandbox Code Playgroud)

示例代码

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;

public class Demo {

    private SwingWorker<Void, String> worker;
    private JTextArea textArea;
    private Action startAction, stopAction;

    private void …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker

19
推荐指数
1
解决办法
3668
查看次数

JFreeChart条形图自定义颜色?

JFreeCharts在java中使用创建条形图.我的问题很简单......如何为条形图中的所有条形图选择自定义颜色?我不确定这个定制是否会在a中完成GradientPaint.我的代码确定条形颜色的一个例子是:

   final GradientPaint gp0 = new GradientPaint(
                    0.0f, 0.0f, Color.blue, 
                    0.0f, 0.0f, Color.blue
                );
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是自定义颜色的正确方法.基本上,我不知道是否GradientPaint是正确的去法.如果是,有人可以告诉我如何编辑此代码以使其成为自定义颜色而不是蓝色?

我不确定这是否有帮助,但是说自定义颜色的信息是

  • 色调:142
  • 周六:109
  • 绥:126
  • 红色:79
  • 格林:129
  • 蓝色:189

有这种方法可以自定义图表的颜色吗?

java charts swing jfreechart bar-chart

10
推荐指数
2
解决办法
1万
查看次数

是否良好的做法覆盖具有更高可见性的方法?

回答这个问题:如何GUI - 使用paintcomponent()初始化GUI,然后基于鼠标添加GUI我已经说过:

你没有paintComponent()正确覆盖.这是一种受保护的方法,而非公开方法.如果@Override在此方法上添加注释,则编译器会抱怨.

但@peeskillet明智地指出了这一点:

编译器不会抱怨publicprotected使用 paintComponent.您可以使用更高的可见性覆盖,但不能覆盖更低的可见性.public高于protected这个没有问题.

这当然是真的.但现在出现了这样一个问题:良好的实践覆盖是否具有更高的可见度?

附录

链接到JComponent.paintComponent() javadoc.

Netbeans的形象完全没有抱怨:

在此输入图像描述

java overriding class-design

8
推荐指数
1
解决办法
1578
查看次数

行筛选器在单元更新事件上无法正常工作

在共享表模型示例中工作我意识到如果我们将行过滤器附加到表的行分类器,则此过滤器对单元更新事件没有任何影响.根据RowSorter API:

RowSorter需要引用诸如TableModel或的模型的具体实现ListModel.视图类(如JTableJList)也将具有对模型的引用.为避免排序依赖项,RowSorter实现不应在模型上安装侦听器.相反,视图类将RowSorter在模型更改时调用.例如,如果在TableModel JTable调用中更新了行rowsUpdated.当模型的变化,该视图可以调用到任何下列方法之一:modelStructureChanged, allRowsChanged,rowsInserted,rowsDeletedrowsUpdated.

因此,据我理解这一段,单元更新是行更新的特殊情况,因此rowsUpdated应该调用并相应地进行行筛选.

为了说明我在说什么,请考虑这个简单的过滤器:

private void applyFilter() {
    DefaultRowSorter sorter = (DefaultRowSorter)table.getRowSorter();
    sorter.setRowFilter(new RowFilter() {
        @Override
        public boolean include(RowFilter.Entry entry) {
            Boolean value = (Boolean)entry.getValue(2);
            return value == null || value;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

在这里,第三列预期是一个Booleanentry(行)具有被包括如果电池值是nulltrue.如果我编辑放置在第三列的单元格并将其值设置为,false那么我希望该行只是从视图中"消失".但是,为了实现这一点,我必须再次设置一个新的过滤器,因为它似乎不能"自动"工作.

TableModelListener按如下方式附加到模型,我可以在单元格编辑上看到更新事件: …

java swing jtable rowfilter rowsorter

7
推荐指数
1
解决办法
2171
查看次数

Java - 如何使用SwingWorker创建多线程游戏

我想用Threads创建一个[1 Player vs PC]游戏.

我们的主板上有10*10两种颜色的形状,如下所示:

在此输入图像描述

当玩家点击蓝色圆圈时,他们的颜色变成灰色.

在另一侧PC应该将所有RED矩形变为灰色.

WINNER是谁先清除他/她自己的形状.


播放器的代码工作正常但是,我的问题在于实现游戏的PC端,正如我在本文中所读到的,我应该使用SwingWorker在GUI中实现线程.这是我第一次使用SwingWorkers,我不知道它应该如何正常工作.

这是我的代码:

主类

public class BubblePopGame {

public static final Color DEFAULT_COLOR1 = Color.BLUE;
public static final Color DEFAULT_COLOR2 = Color.RED;

public BubblePopGame() {
    List<ShapeItem> shapes = new ArrayList<ShapeItem>();

    int Total = 10;
    for (int i = 1; i <= Total; i++) {
        for (int j = 1; j <= Total; j++) {
            if ((i + j) % 2 == 0) {

                shapes.add(new ShapeItem(new Ellipse2D.Double(i * 25, j …
Run Code Online (Sandbox Code Playgroud)

java concurrency swing multithreading swingworker

6
推荐指数
1
解决办法
514
查看次数

自定义TableCellRenderer/TreeTableCellRenderer不呈现表格单元格

我把这个CustomCellRenderer类打算用于JXTreeTableJXTable对象,因为我的项目中有很多这些.所以这个类实现TreeCellRendererTableCellRenderer接口:

public class CustomCellRenderer extends JLabel 
                                implements TreeCellRenderer, TableCellRenderer {

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        setBackground(selected ? new Color(83,142,213) : Color.white);
        setForeground(selected ? Color.white : Color.black);
        //here is the icon setting code but it's irrelevant to my problem
        setText(value != null ? value.toString() : "<null>");
        return this;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, …
Run Code Online (Sandbox Code Playgroud)

java swing renderer swingx jxtreetable

5
推荐指数
1
解决办法
3662
查看次数

来自bean的Primefaces对话框只显示一次

我正试图从这个PrimeFaces ShowCase中描述的bean中显示一个对话框.事情是一切按预期工作,对话框显示,但如果我关闭对话框然后再次按下按钮,除非页面刷新,否则对话框不会显示.

这不是示例中显示的行为,每次按下按钮时,对话框都会出现.

我在代码中唯一的区别是我使用了CDI替代品而不是托管bean包,因为javax.faces.bean包将被弃用.我的意思是:

  • javax.inject.Named 代替 javax.faces.bean.ManagedBean
  • javax.faces.view.ViewScoped 代替 javax.faces.bean.ViewScoped

在任何情况下,我也尝试过托管bean包,但仍然是相同的错误行为.

这是我到目前为止:

的index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <p:commandButton value="Open" actionListener="#{viewDialogMB.viewDialog()}"/>
        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

ViewDialogMB.java

import java.util.HashMap;
import java.util.Map;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.primefaces.context.RequestContext;


@Named(value = "viewDialogMB")
@ViewScoped
public class ViewDialogMB {

    public void viewDialog() {
        Map<String,Object> options = new HashMap<>();
        options.put("modal", true);
        options.put("resizable", true);

        RequestContext.getCurrentInstance().openDialog("dialog", options, null); …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces jsf-2 glassfish-4

5
推荐指数
1
解决办法
1826
查看次数

在Nimbus外观中的JTabbedPane左侧对齐图标

我正在创建一个JTabbedPane使用Nimbus外观的应用程序

我已使用此代码放置标签:

pane.addTab("Welcome",new ImageIcon("resources\\1.png"),mainPanel,"Takes to the welcome page");
Run Code Online (Sandbox Code Playgroud)

我希望图标显示在左侧和

应用程序的屏幕截图

java user-interface swing jtabbedpane nimbus

4
推荐指数
1
解决办法
4487
查看次数

使用多个自定义表模型,避免重复代码

我正在一个项目中,我们有几个域类来建模业务数据.这些类是简单的POJO,我必须使用它们显示几个表.例如,考虑这个类:

public class Customer {

    private Long id;
    private Date entryDate;
    private String name;
    private String address;
    private String phoneNumber;

    public Customer(Long id, Date entryDate, String name, String address, String phoneNumber) {
        this.id = id;
        this.entryDate = entryDate;
        this.nombre = name;
        this.domicilio = address;
        this.telefono = phoneNumber;
    }

    // Getters and setters here
}
Run Code Online (Sandbox Code Playgroud)

我创建了自己的表格模型,从AbstractTableModel扩展,以便直接使用Customer类:

public class CustomerTableModel extends AbstractTableModel {

    private final List<String> columnNames;
    private final List<Customer> customers;

    public CustomerTableModel() {
        String[] header = new …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablemodel abstracttablemodel

3
推荐指数
1
解决办法
456
查看次数