Tag: swing

如果可能,将jFrame输出到第二个监视器

我有一个关于Java的Swing的jFrame,如果这个监视器存在,我希望它输出到第二个监视器。 我尝试了这个(通过这个页面)来获得显示的分辨率 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { GraphicsConfiguration[] gc = gs[j].getConfigurations(); for (int i = 0; i < gc.length; i++) { Rectangle gcBounds = gc[i].getBounds(); int xoffs = gcBounds.x; int yoffs = gcBounds.y; } } 但后来我在调试器中看到xoffs和yoffs为我的第一台显示器(1360 * 768)xoffs = 1360和yoffs = 0秒显示器(1280 […]

为什么在通过列表模型更新内容后,我有时会得到空白的JLists?

我有一个反复出现的问题,我有一个JList,我希望用新内容更新。 我正在使用DefaultListModel,它提供了向列表中添加新内容的方法,但是当使用这些方法时,我发现有一部分调用会导致一个完全空白的JList。 更新是否有效似乎是随机的,与发送的数据无关。 下面是一个演示问题的简单程序。 它只是生成一个增加大小的列表来更新JList,但是当运行时,列表内容似乎随机出现和消失。 据我所知,我正在遵循正确的API来做到这一点,但我想我必须有一些基本的东西我不知道。 import java.awt.BorderLayout; import javax.swing.*; public class ListUpdateTest extends JPanel { private JList list; private DefaultListModel model; public ListUpdateTest () { model = new DefaultListModel(); list = new JList(model); setLayout(new BorderLayout()); add(new JScrollPane(list),BorderLayout.CENTER); new UpdateRunner(); } public void updateList (String [] entries) { model.removeAllElements(); for (int i=0;i<entries.length;i++) { model.addElement(entries[i]); } […]

如何在JFrame中设置对象的位置?

我有标签和JButtons我想在JFrame中定义位置。 import java.awt.*; import java.net.InetAddress; import java.net.UnknownHostException; import javax.swing.*; public class GuiFrame extends JFrame { public static void main(String[] args) throws UnknownHostException { JFrame f = new JFrame(“This is a test”); f.setSize(400, 150); JRadioButton ButtonServer = new JRadioButton(“Server”); JRadioButton ButtonClient = new JRadioButton(“Client”); InetAddress thisIp = InetAddress.getLocalHost(); Label lip = new Label(“Your IP is : […]

Swing应用程序初始化和加载屏幕方法

我已经制作了很多不同的Swing应用程序,它们的加载时间通常在几秒到几分钟之间变化,具体取决于应用程序UI /数据大小。 在某些情况下,应用程序数据加载与UI加载混合在一起。 几秒钟的加载时间不是问题,但是当它比10秒钟更长时 – 显然应该显示某种加载屏幕,直到UI /数据完全初始化为止。 你通常会做什么 – 首先创建某种加载屏幕(例如带有徽标的窗口和一些在加载应用程序时正在更新的标签),并从应用程序中的各种加载“点”更新它。 问题是 – 应用程序通常在排队到EDT的单个调用中加载,很难将其分成多个调用EDT,而不会使应用程序的代码复杂化。 因此,由于应用程序加载是在排队到EDT的单个调用中执行的,因此您无法正确更新加载屏幕 – 直到应用程序初始化之后才会显示更新,因为EDT正忙于加载应用程序。 因此,为了在某些情况下实现加载屏幕,我已经在EDT之外移动了应用程序UI初始化,并且设计它们的方式是在执行加载时不会执行任何UI更新。 应用程序的框架显示和所有应用程序UI操作仍将在EDT中执行。 这通常不太好,但经过大量测试并查看Swing代码后,我确信它不会导致任何问题,即使在大型应用程序上也是如此。 尽管如此,即使不引起任何问题,这也不是一件好事。 所以问题是: 在EDT中保持应用程序初始化的同时,可以使用哪些方法正确显示和更新应用程序加载屏幕? 希望它不是太宽泛。 这是一个“虚拟”应用程序,它展示了一种“坏”方法: import javax.swing.*; import java.awt.*; public class DummyApplication extends JFrame { private static JDialog loadingDialog; private static JLabel loadingProgress; public DummyApplication () { super ( “Dummy application” ); dummyProgressUpdate ( “Loading content…”, […]

如何使用apache poi获取doc,docx文件中特定单词的行号,页码?

我正在尝试创建一个java application ,它将搜索所选doc, docx文件中的特定单词并生成一个报告。 该报告将包含页码和搜索单词的行号 。 现在我所取得的成就是我能够逐段阅读doc和docx文件。 但我没有找到任何方法来搜索特定的单词并获得该单词所在的行和页码 。 我搜索了很多,但直到现在都没有运气。 希望有人知道这样做的方法。 这是我的代码 if(fc.getSelectedFile().getAbsolutePath().contains(“docx”)) { File file = fc.getSelectedFile(); FileInputStream fis = new FileInputStream(file.getAbsolutePath()); XWPFDocument document = new XWPFDocument(fis); List paragraphs = document.getParagraphs(); System.out.println(“Total no of paragraph “+paragraphs.size()); for (XWPFParagraph para : paragraphs) { System.out.println(para.getText()); } fis.close(); } else { WordExtractor extractor = null; FileInputStream fis […]

如何在Java中设置LookAndFeel文件?

我需要在JDK 1.6中设置LookAndFeel文件。 我有两个文件: napkinlaf-swingset2.jar napkinlaf.jar 如何设置并使用它? 我想要一个GTK的外观和感觉OR Qt的外观和感觉,它们是否可用?

将JPanel定位在特定位置的JFrame中

我需要帮助将JPanel定位到特定位置到Jframe中。 我在一个扩展JFrame的类中有一个JPanel,我需要将这个JPanel放在特定的x,y位置。 它是这样的: public class Frame extends JFrame { public Frame(){ this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLocation(250, 250); this.setSize(300,300); this.setVisible(true); JPanel panel = new JPanel(); this.add(panel); panel.setLocation(150, 150); panel.add(new JButton(“Hello!”)); // just to show JPanel }//Frame() }//Frame 我不需要LayoutManager作为JPanel的位置,因为我需要将JPanel放在特定位置(如示例中的150,150)。 但是,如果我像上面的代码一样执行panel.setLocation(150,150),没有任何反应,JPanel仍然在框架的北中心(如果我更改x,y数字而不是150,150)。 它显示如下: http://sofzh.miximages.com/java/Te3z0kv.png

Java swing双缓冲

我刚刚开始使用双缓冲,一切正常,直到我想在屏幕上添加一个JScrollPane,所以我以后可以做一些相机移动。 一切都很好(我的精灵)除了JScrollPane的ScrollBars之外。 我希望它们能被展示出来! 但是,如果我调整窗口大小,滚动条会闪烁,所以我知道它们在那里! 如果我足够快,我甚至可以使用它们。 他们怎么没有出现在渲染? 🙁 这是问题的SSCCE: public class BufferStrategyDemo extends JFrame { private BufferStrategy bufferStrategy; private JPanel gameField; private JScrollPane scroll; public BufferStrategyDemo() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.getContentPane().setPreferredSize(new Dimension(800, 600)); this.pack(); this.createBufferStrategy(2); this.gameField = new JPanel(); this.gameField.setPreferredSize(new Dimension( 1400, 600 )); this.scroll = new JScrollPane( gameField ); this.add( scroll, BorderLayout.CENTER ); this.setVisible( true ); this.bufferStrategy […]

用于java图形的multithreading

我有一个java应用程序,它可以传输原始数据并相应地绘制实时图。 这是通过调用我编写的使用Graphics对象的类的方法来处理的。 我在重写的paintComponent方法中实现了算法,以生成最新数据中的所有图。 我在我的类中有其他方法来更新paintComponent方法中使用的变量来绘制图形。 在我的主类中,我定期在计时器事件处理程序中更新我的图形。 在事件处理程序中,我从我的图形类中调用更新某些变量的方法,进行一些计算,然后调用repaint()(这显然是调用paintComponent方法的正确方法)。 我的问题是,我在paintComponent方法中使用的算法可能需要(相对)长的时间来完成,具体取决于我的图的数量和分辨率。 (我还没有遇到这个问题,但我现在正试图解决它)。 当然我不希望所有这些图形占用我的应用程序的所有处理时间,所以我想知道是否可以在单独的线程中执行“paintComponent”。 如果我在main中创建一个子类来运行一个单独的线程并简单地调用我描述的图形方法会发生什么? 会自动使所有这些方法(包括paintComponent)在新线程中执行吗? 或者我是否必须修改我的图表类本身才能使用? 理想情况下,我想避免修改我的图表类,因为我已经将它设计为在NetBeans GUI构建器中作为JPanel工作,我想避免破坏该function。

MigLayout错误:“绝对链接值中的不稳定循环依赖!”

为什么这个SSCCE(使用MigLayout库)…… public static void main(String[] args) { try { UIManager.setLookAndFeel(“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { e.printStackTrace(); } JFrame frame = new JFrame(); frame.setLayout(new MigLayout(new LC().fill().insetsAll(“0”))); JTabbedPane jtp = new JTabbedPane(); jtp.add(new JPanel(), “Tab 1”); jtp.add(new JPanel(), “Tab 2”); JLabel label = new JLabel(“label”); JPanel panel = new JPanel(new MigLayout(new […]