小编Shr*_*ave的帖子

如何在JavaFX中创建一个可移动/可拖动的未修饰窗口?

我必须创建一个应用程序,其中最小化和最大化按钮将被禁用.

我已经习惯"StageStyle.UNDECORATED"了应用程序不再可移动或可拖动,所以我正在寻找任何其他替代方案来进行我的应用程序.

有没有人有这方面的解决方案?

minimize maximize javafx-2

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

JavaFx可编辑组合框:在项目选择上显示toString

我有一个ComboBox<Perosn>类型Person,其中我添加了几个Person类的对象,

我已经使用setCellFactory(Callback)方法在ComboBox下拉列表中显示人名

combobox.setCellFactory(
    new Callback<ListView<Person >, ListCell<Person >>() {
        @Override
        public ListCell<Person > call(ListView<Person > p) {
            ListCell cell = new ListCell<Person >() {
                @Override
                protected void updateItem(Person item, boolean empty) {
                    super.updateItem(item, empty);
                    if (empty) {
                        setText("");
                    } else {
                        setText(item.getName());
                    }
                }
            };
            return cell;
        }
    });
Run Code Online (Sandbox Code Playgroud)

并且,在选择上setButtonCell(ListCell)显示名称的方法combobox.

combobox.setButtonCell(
    new ListCell<Object>() {
        @Override
        protected void updateItem(Person t, boolean bln) {
            super.updateItem(t, bln); 
            if (bln) {
                setText(""); …
Run Code Online (Sandbox Code Playgroud)

combobox javafx javafx-2 javafx-8

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

带有MAC OS的java.awt.Robot类中的无头环境错误

我正在尝试使用Robot类在我的JavaFX应用程序中捕获屏幕截图,

这是我在我的应用程序中使用的代码:

Rectangle screenBounds = new Rectangle(Screen.getPrimary().getBounds().getWidth(),
           Screen.getPrimary().getBounds().getHeight());

Robot robot = new Robot();

BufferedImage img = robot.createScreenCapture(new java.awt.Rectangle(
     (int) screenBounds.getX(), (int) screenBounds.getY(), (int) 
             screenBounds.getWidth(), (int) screenBounds.getHeight()));
Run Code Online (Sandbox Code Playgroud)

它在Windows操作系统中运行良好,但headless environmentMAC OS中显示错误Robot robot = new Robot();

java macos headless awtrobot javafx-2

9
推荐指数
1
解决办法
8765
查看次数

将TIF转换为JPG而不增加Bit Depth

我想将TIF图像转换为JPG图像.为此,我使用以下代码:

    SeekableStream s = new FileSeekableStream(tiffUrl);
    TIFFDecodeParam param = null;
    ImageDecoder dec = ImageCodec.createImageDecoder(EXT_TIFFX, s, param);
    RenderedImage op = dec.decodeAsRenderedImage(0);
    FileOutputStream fos = new FileOutputStream(jpgUrl);
    JPEGEncodeParam jpgparam = new JPEGEncodeParam();
    jpgparam.setQuality(quality);               
    ImageEncoder en = ImageCodec.createImageEncoder(EXT_JEPGX, fos, jpgparam);
    en.encode(op);
    fos.flush();
    fos.close();
    s.close();
Run Code Online (Sandbox Code Playgroud)

在转换之前,我的图像大小约为92KB,比特深度= 1转换后,我的新jpg图像大小约为1573KB,比特深度= 24

我需要在100KB以下管理我的新图像.我想如果我将Bit Depth控制为1本身就可以做到这一点.

是否有任何解决方案有助于执行此操作?

java image image-processing type-conversion

9
推荐指数
1
解决办法
611
查看次数

JavaFx:空ListView的默认消息

当任何表中没有记录时,它会显示一条消息"表中没有内容",这默认是JavaFx中TableView的功能.

所以我的问题是,JavaFx中的ListView是否可以实现相同的目标?就像,如果任何ListView中没有项目,那么它将显示与TableView相同的消息,而不是空白/空字段.

java listview javafx javafx-2 javafx-8

8
推荐指数
3
解决办法
7250
查看次数

Java问题:MAC OS中的内存和CPU使用情况

我正在为MAC和Windows开发一个javaFx应用程序,我发现该应用程序在MAC中使用的是非常大的内存和CPU使用率.

当我在Windows任务管理器中看到我的应用程序活动时,它显示平均80MB内存和1-2%CPU的使用率,最大可达150MB和12-15%CPU.另一方面,在MAC Activity Monitor中,相同的应用程序在启动时显示150MB和12-15%的CPU,并且持续增加超过1GB和90%的CPU.

这是我在JavaFX应用程序中发现的一个非常奇怪的问题.

我甚至测试了这个简单的java应用程序,并发现在MAC和Windows中内存和CPU的类似行为.

为什么Java在MAC中使用更多内存和CPU?有什么可以解决这个问题的原因吗?

macos memory-management cpu-usage java-7 javafx-2

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

如何在JavaFx中捕获强制退出或意外关闭的事件?

我正在制作一个桌面应用程序,它具有服务器的登录和注销功能.

每当有人关闭窗口时我都需要从应用程序注销,所以我使用这些代码

primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
                @Override
                public void handle(WindowEvent event) {
                    event.consume();
                    closeWindow();
                }
            });
Run Code Online (Sandbox Code Playgroud)

其中closeWindow()包含注销和其他相关步骤.

现在,当应用程序意外关闭或有人从任务管理器强制退出/关闭它时(通过结束进程)存在问题.

JavaFX是否有任何事件可以强制关闭或意外关闭?或者,如果有任何方法可以阻止它?

java javafx-2

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

Java:根据匹配的字符串/模式对数组进行排序

我需要对一个数组进行排序,其中匹配的项目会出现,而其他项目会出现故障.

对于Ex.我有一个数组:[z,asxdf,abasdf,abcasdf,b,bc,bcd,c] 我需要的是当我传递KeyWord假设"b"时,它应该对给定的数组进行排序,其中所有的字符串都以b ..将首先出现,之后是其余的.这将产生最终输出:[b,bc,bcd,z,c,..(休息).]

如果可以在Java中使用比较器?

String keyWord = "b";
String[] s = {"z", "asxdf", "abasdf", "abcasdf", "b", "bc", "bcd", "c"};
Arrays.sort(s, new Comparator<String>() {

    @Override
    public int compare(String o1, String o2) {

            //Code to sort array according to need

    }
});
System.out.println(Arrays.toString(s));
Run Code Online (Sandbox Code Playgroud)

Result -> [ b , bc , bcd , z , c , ...]

(我可以使用List而不是Array,或任何其他如果它可以帮我解决这个问题)

java sorting string collections comparator

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

将TIF/TIFF转换为JPG:Bad endianness标记

我试图将TIF/TIFF图像转换为JPG,但工作正常但是对于很少的TIF图像我得到IllegalArgumentException:Bad endianness标记(不是0x4949或0x4d4d).

例外:

java.io.IOException: Bad endianness tag (not 0x4949 or 0x4d4d).
    at com.sun.media.jai.codecimpl.CodecUtils.toIOException(CodecUtils.java:76)
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.getNumPages(TIFFImageDecoder.java:98)
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.decodeAsRenderedImage(TIFFImageDecoder.java:103)
    at com.sun.media.jai.codec.ImageDecoderImpl.decodeAsRenderedImage(ImageDecoderImpl.java:140)
    at com.pkg.jae.utils.GenericImageUtils.convertTiffToJpg(GenericImageUtils.java:35)
    at com.pkg.jae.utils.GenericImageUtils.main(GenericImageUtils.java:92)
Caused by: java.lang.IllegalArgumentException: Bad endianness tag (not 0x4949 or 0x4d4d).
    at com.sun.media.jai.codec.TIFFDirectory.getNumDirectories(TIFFDirectory.java:595)
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.getNumPages(TIFFImageDecoder.java:96)
    ... 4 more
Run Code Online (Sandbox Code Playgroud)

代码功能:

public static void convertTiffToJpg(String strTiffUrl,String strJpgFileDestinationUrl) throws Exception {
        try {
            FileSeekableStream obj_FileSeekableStream = new FileSeekableStream(new File(strTiffUrl));
            ImageDecoder obj_ImageDecoder = ImageCodec.createImageDecoder(EXT_TIFFX, obj_FileSeekableStream, null);
            RenderedImage obj_RenderedImage = obj_ImageDecoder.decodeAsRenderedImage();
            JAI.create("filestore", obj_RenderedImage,strJpgFileDestinationUrl, EXT_JEPGX);
            obj_RenderedImage = null;
            obj_ImageDecoder = null;
            obj_FileSeekableStream.close();
        } catch …
Run Code Online (Sandbox Code Playgroud)

java jpeg tiff endianness jai

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

JavaFx:错误无法识别

我在JavaFx8中创建了一个工作正常,但有时显示异常,如下所述.我无法理解为什么我会遇到这种例外.有没有办法跟踪此异常.或任何熟悉此类例外的人.请帮助.

java.lang.NullPointerException
    at com.sun.pisces.PiscesRenderer.fillLCDAlphaMask(PiscesRenderer.java:334)
    at com.sun.prism.sw.SWGraphics.drawStringInternal(SWGraphics.java:776)
    at com.sun.prism.sw.SWGraphics.drawString(SWGraphics.java:732)
    at com.sun.javafx.sg.prism.NGText.renderText(NGText.java:319)
    at com.sun.javafx.sg.prism.NGText.renderContent(NGText.java:277)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:412)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
    at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1283)
    at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:237)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:203)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1254)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:412)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
    at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1283)
    at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:237)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:203)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1254)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:412)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
    at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1283)
    at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:237)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:203)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1254)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:412)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
    at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1283)
    at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:237)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:203)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1254)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:412)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:69)
    at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1283)
    at com.sun.javafx.sg.prism.NGGroup.renderChildren(NGGroup.java:237)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:203)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:1254)
    at com.sun.javafx.sg.prism.NodeEffectInput.render(NodeEffectInput.java:154)
    at com.sun.javafx.sg.prism.NodeEffectInput.filter(NodeEffectInput.java:84)
    at com.sun.scenario.effect.Merge.filter(Merge.java:161)
    at com.sun.scenario.effect.DelegateEffect.filter(DelegateEffect.java:70) …
Run Code Online (Sandbox Code Playgroud)

nullpointerexception java-8 javafx-8

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

将焦点设置在组合框的特定项目上而不选择它

我正在尝试制作一个组合框,它具有从其项目中搜索匹配项的功能。

这是我所做的代码示例,

ObservableList<String> ab = FXCollections.observableArrayList("z", "asxdf", "abasdf", "bcasdf", "b", "bc", "bcd", "c");

final ComboBox box = new ComboBox(ab);
box.setEditable(true);

box.setOnKeyReleased(new EventHandler<KeyEvent>() {
   @Override
   public void handle(KeyEvent t) {

      box.show();

      for (String item : items) {
         if (item.startsWith(box.getEditor().getText())) {

             box.getSelectionModel().select(item); //which selects the item.

             break;
         }
      }
   }
});
Run Code Online (Sandbox Code Playgroud)

现在的问题是box.getSelectionModel().select(item);选择在组合框中键入的特定项目,但我不想选择该项目,我只想将鼠标悬停在(聚焦)该项目上,就像鼠标悬停时一样。

谁能告诉我要替换的代码box.getSelectionModel().select(item);并帮助我解决这个问题。

java combobox javafx javafx-2 javafx-8

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