小编kle*_*tra的帖子

getSource()和getActionCommand()

什么是getSource?它返回了什么?

什么是getActionCommand()以及它返回什么?

我对这两个人之间的困惑可以让任何人给予我或将它们区分给我吗?在UI中使用getSource和getActionCommand()有什么用?特别是TextField还是JTextField?

java user-interface swing action event-handling

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

TableView:调整可见行数

我正在使用此表在表视图中显示数据:

import javafx.application.Application;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Pagination;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;

public class MainApp extends Application
{
    IntegerProperty intP = new SimpleIntegerProperty(5);
    AnchorPane anchor = new AnchorPane();
    Scene scene;
    ObservableList<Integer> options
        = FXCollections.observableArrayList(
            5,
            10,
            15,
            20);
    final ComboBox comboBox = new ComboBox(options);
    final ObservableList<Person> data = FXCollections.observableArrayList(
        new Person("1", "Joe", "Pesci"), …
Run Code Online (Sandbox Code Playgroud)

javafx tableview javafx-2 javafx-8

18
推荐指数
3
解决办法
2万
查看次数

ObservableList:如何可靠地检测setAll?

在某些情况下,有必要检测 - 在ListChangeListener中,无需控制列表本身 - "所有数据被换出",当我们需要清除某些状态时选择 - 在全新数据上,旧状态毫无意义.

可以通过以下方式获得完整的新数据

  • list.setAll(...)
  • list.set(otherObservableList)如果list是ListProperty

考虑可以在setAll上触发哪种类型的更改(c是更改,items是观察到的列表,"subChangeCount"用于计算子更改的伪代码):

// initially empty
assertEquals(0, items.size());
items.setAll(1, 2, 4);
assertEquals(1, c.subChangeCount());
assertTrue(c.wasAdded() && !c.wasReplaced());
assertEquals(0, c.getFrom());
assertEquals(c.getList().size(), c.getAddedSize()); 

// initially not empty
assertTrue(items.size() > 0);
items.setAll(1, 2, 4);
assertEquals(1, c.subChangeCount());
assertTrue(c.wasReplaced());
assertEquals(0, c.getFrom());
assertEquals(c.getList().size(), c.getAddedSize()); 
Run Code Online (Sandbox Code Playgroud)

这似乎允许实用程序检查,如:

boolean wasSetOrClearedAll(Change c) {
   if (c.getList().isEmpty()) return true;
   c.next();
   if (c.getAddedSize() == c.getList().size()) return true; 
   return false; 
}  
Run Code Online (Sandbox Code Playgroud)

相比之下,内部fx代码,在收听ComboBox的项目时:

while (c.next()) {
   comboBox.wasSetAllCalled = comboBox.previousItemCount == c.getRemovedSize();
   ... 
}
comboBox.previousItemCount = getItemCount();
Run Code Online (Sandbox Code Playgroud)

存储旧的itemCount并将其与当前的removedSize进行比较(我感到很不舒服,旧状态经常因我的口味而变得陈旧),但是我很有可能在我的方法中遗漏了一些东西.

问题是: …

java javafx observablelist javafx-8

18
推荐指数
1
解决办法
707
查看次数

遍历由DefaultMutableTreeNode构成的树

我们使用DefaultMutableTreeNodeJava中指定的树结构.

有没有办法遍历它,这是内置的?

如果没有,请提出其他技巧.

java tree swing parsing

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

霓虹灯:如何在jdk9上运行?

刚刚开始玩jdk9 - 并且刚刚开始时卡住了:

  • 下载并解压缩eclipse-java-neon-m4a-win32
  • 安装java 9支持(来自市场的dnd )
  • 下载并安装了jdk9u99(只有jdk,而不是公共jre)

此时,我可以使用jre/jdk(在eclipse.ini中使用/ out vm参数)在我的默认java(8u60)上运行eclipse并使用java 9支持.

下一步,我想用java 9运行eclipse:将vm-arg添加到eclipse.ini,现在eclipse使用冗长的错误日志中止其启动(ini和log都显示在下面).

哪里出了问题?

我的ini:

-startup
plugins/org.eclipse.equinox.launcher_1.3.200.v20151021-1308.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.300.v20151013-1129
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
d:\java\jdk\190_ea\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
Run Code Online (Sandbox Code Playgroud)

错误日志的顶部(它> 900k)

!SESSION 2016-01-22 14:31:55.974 -----------------------------------------------
eclipse.buildId=4.6.0.I20151209-2300
java.version=9-ea
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product

!ENTRY org.eclipse.equinox.common 4 0 2016-01-22 14:31:57.113
!MESSAGE FrameworkEvent ERROR
!STACK 0 …
Run Code Online (Sandbox Code Playgroud)

eclipse java-9 eclipse-neon

17
推荐指数
5
解决办法
2万
查看次数

错误或功能:Win6 +的Swing默认gui字体不正确

只是(令人惊讶地;-)注意到应用程序在我的win6 +机器上看起来如此拥挤的原因(同样适用于Vista和Win7,都有120dpi设置,jdk6和jdk7):从桌面属性查找的控件字体都有错误的字体家庭和错误的大小:

public static void main(String[] args) {
    Font guiFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty("win.defaultGUI.font");
    int guiSize = guiFont.getSize();
    Font iconFont = (Font) Toolkit.getDefaultToolkit().getDesktopProperty("win.icon.font");
    System.out.println("gui default: " + guiFont + "\nicon default: " + iconFont);
}
Run Code Online (Sandbox Code Playgroud)

输出:

gui default: java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=13]
icon default: java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=15] 
Run Code Online (Sandbox Code Playgroud)

后者几乎用于所有文本的本机应用程序,而Swing使用前者...

问题:

  • 可能有任何理由,或只是一个错误?
  • 谁负责:Swing查找(从相关系统资源读取desktopProperty时)或操作系统没有正确报告?
  • 如何强制使用后者?

解决最后一个的选项:

  • 通过完全控制LAF,人们可能会考虑设置所有相关的文本字体(这就是JGoodies的功能,并将其纳入FontPolicy/Set).
  • 一个脏的hack是将defaultGUI桌面属性的值设置为正确的值 - 它涉及对工具包的反射访问,这自然会在安全受限的上下文中发挥作用.
  • ??

编辑

万一有人感兴趣,这是肮脏的黑客:

/**
 * Replaces the default gui desktop font property with the icon font
 * if the former is smaller.
 * 
 */
public static void …
Run Code Online (Sandbox Code Playgroud)

java fonts swing windows-7

16
推荐指数
1
解决办法
2259
查看次数

JavaFX - 模块化和非模块化之间的区别

目前我正在阅读JavaFX的“入门”。它区分模块化和非模块化方法。

例如在“JavaFX 和 Eclipse”中:“来自 IDE 的非模块化”和“来自 IDE 的模块化”..

这两个术语有什么区别?

java javafx

15
推荐指数
1
解决办法
4041
查看次数

JScrollPane和JList自动滚动

我有下一个代码:

    listModel = new DefaultListModel();
    listModel.addElement(dateFormat.format(new Date()) + ": Msg1");
    messageList = new JList(listModel);
    messageList.setLayoutOrientation(JList.VERTICAL);

    messageScrollList = new JScrollPane(messageList);
    messageScrollList.setPreferredSize(new Dimension(500, 200));

    messageScrollList.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  
        public void adjustmentValueChanged(AdjustmentEvent e) {  
            e.getAdjustable().setValue(e.getAdjustable().getMaximum());  
        }
    }); 
Run Code Online (Sandbox Code Playgroud)

它会自动向下滚动.但是,如果我尝试向上滚动以重新阅读消息,则会强制向下滚动.我怎样才能解决这个问题?

java swing jscrollpane jlist autoscroll

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

Java:选定行的索引在排序时不会更改

我有一个Jtable,我称之为方法 table1.setAutoCreateRowSorter(true);.所以这很好用.但我在我的JFrame类中也有一个方法,当我按下按钮时会触发它.它使用此代码获取选定的行索引 int selectedRows[] = this.table1.getSelectedRows();.并显示所选间隔中对应的第一行的编辑窗口.

问题是,如果我没有点击列的标题(我的意思是我根本不对它们进行排序),我的方法是完美的.但是当我对行进行排序时,行的索引似乎根本没有变化 - 从而导致旧行的编辑窗口最初在进行任何排序之前处于该位置.

我正在使用JDK 6可以给任何提示吗?

java swing jtable selection

13
推荐指数
2
解决办法
9022
查看次数

Java JTree只扩展一级节点

使用JTree,假设根节点为0级,并且根目录下可能有多达5个级别,如何轻松扩展所有1级节点,以便所有1级和2级分支和叶子都可见,但3级及以下都没有?

java swing jtree

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