我正在使用JOptionPane.showMessageDialog(null,e,"Invalid Name",JOptionPane.ERROR_MESSAGE)方法来显示从Exception类扩展的异常.但除非我按下Alt + tab,否则Pop窗口不会显示.可能是什么原因?以下是片段.建议我一些事情.
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
class NameInvalidException extends Exception {
/**
* Invalid Name
*/
String invName;
public NameInvalidException() {
super();
}
public NameInvalidException(String s) {
invName = s;
}
}
class SmallException extends Exception {
/**
* Short Name
*/
String sName;
public SmallException() {
super();
}
public SmallException(String s) {
sName = s;
}
}
public class ValidName {
public static void main(String arr[]) {
try {
BufferedReader br …Run Code Online (Sandbox Code Playgroud) 我是SWT的新手.我正在研究的项目有一个主要的复合材料,上面有3个儿童复合材料.Upper复合材料由按钮组成,中间复合材料用于显示内容,下部复合材料用于其他目的.当我单击上部合成中的按钮时,它必须触发中间合成中的内容更改.这是我习惯做的代码
public void widgetSelected(SelectionEvent e) {
/* Retrieve the contents that are currently in middle composite*/
Composite currentCenterComposite = EMWindow.getCenterCompsiteState();
/* Retrieve the main composite*/
Composite outerComposite=EMWindow.getOuterCompsiteState();
if ((currentCenterComposite != null) && (!currentCenterComposite.isDisposed())) {
/* Remove children that are already laid out */
Object[] children = currentCenterComposite.getChildren ();
for (int i = 0; i < children.length; i++) {
((Composite)children[i]).dispose();
}
}
currentCenterComposite = new CenterComp(currentCenterComposite);
GridData gd_centerComposite = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
gd_centerComposite.minimumHeight = 50;
currentCenterComposite.setLayoutData(gd_centerComposite);
currentCenterComposite.layout(true); …Run Code Online (Sandbox Code Playgroud) 我创建了一个方法,它将两个Collection<String>作为输入并将一个副本复制到另一个.
但是,我不确定在开始复制之前是否应该检查集合是否包含相同的元素,或者我是否应该只是复制.这是方法:
/**
* Copies from one collection to the other. Does not allow empty string.
* Removes duplicates.
* Clears the too Collection first
* @param src
* @param dest
*/
public static void copyStringCollectionAndRemoveDuplicates(Collection<String> src, Collection<String> dest) {
if(src == null || dest == null)
return;
//Is this faster to do? Or should I just comment this block out
if(src.containsAll(dest))
return;
dest.clear();
Set<String> uniqueSet = new LinkedHashSet<String>(src.size());
for(String f : src)
if(!"".equals(f))
uniqueSet.add(f);
dest.addAll(uniqueSet);
}
Run Code Online (Sandbox Code Playgroud)
也许删除它更快 …
我的问题可以归结为:它是Swing编程中的标准结构,它允许侦听器控制新组件(例如新的JPanel)以进行显示和输入,并使新组件的侦听器控制新组件以进行显示和输入,等等到无穷大?或者Java是否需要恢复到某种统一类,它将所有Swing组件按程序顺序连接在一起?
目前,在我的应用程序中仅使用一个JFrame,在我的侦听器中,我的初始JFrame对象作为参数传递给我的所有JPanel,因此他们的侦听器可以调用removeall()来清除新JPanel的帧.例如,短代码如下
public class MainFrame {
JFrame jfrm;
public MainFrame() {
jfrm = new JFrame("Main Frame");
JPanel mainPanel = new MainPanel(jfrm);
}
}
public class MainPanel extends JPanel {
public MainPanel(final JFrame mainFrame) {
JButton example = new JButton("Example");
example.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent le) {
mainFrame.removeall();
JPanel 2ndPanel = new 2ndPanel(mainFrame);
mainFrame.add(2ndPanel);
mainFrame.validate();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的结构 - 在哪里产生新面板的听众而不是一些统一的类?但是,如果是这样的话,如果有一个级联无限的侦听器,Java的编译器如何获得mainFrame.validate()?我是一个老派程序程序员,试图用Java编写Swing应用程序,我想我可能没有掌握Swing编程的基本概念.期待任何有用的答案,并提前感谢!
我的java environement有问题.我已经运行Solr 1.3(搜索引擎)了一年以上,突然间我遇到了很多麻烦.我的所有线程池(250)每天被随机阻止一次或两次.我没有对我的solr应用程序或我的tomcat服务器进行任何更改.
我正在运行tomcat 5.5.25和Solr 1.3.当系统完全超载时我得到了一个线程转储:
像这样的240线程igot:
"http-8080-Processor1" daemon prio=10 tid=0x0000000000b2e000 nid=0x193 waiting for monitor entry [0x000000004066c000..0x000000004066cb20]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.logging.StreamHandler.publish(StreamHandler.java:174)
- waiting to lock <0x00007fe37e72b340> (a java.util.logging.ConsoleHandler)
at java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:88)
at java.util.logging.Logger.log(Logger.java:472)
at java.util.logging.Logger.doLog(Logger.java:494)
at java.util.logging.Logger.log(Logger.java:517)
at java.util.logging.Logger.info(Logger.java:1036)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1212)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
我们可以看到这个线程被阻塞并等待:<0x00007fe37e72b340>
实际拥有<0x00007fe37e72b340>的线程是这样的:
"http-8080-Processor156" daemon prio=10 …Run Code Online (Sandbox Code Playgroud) 这是一个问题:我有方法digest(byte[] data).它应该是私人的,因为我们真的不需要它在课外,但如果我公开,如果它有帮助,我就不会死.
问题是:我可以以某种方式附加拦截器吗?事情是它不被称为getBean('MyBean').digest(),它通过getBean('MyBean').sign(data)标志是smth的方式调用
public byte[] sign(byte[] data){
...
b = digest(data);
...
return signature;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
目前,当我输入我的webapp的URL时,请说"http://abc.edu/mywebapp/",我将被带到我的webapp的登录页面.当我输入"http://abc.edu/"时,我将被带到GlassFish信息页面.我怎么能这样做,当我键入"http://abc.edu/"时,我将被带到我的登录页面而不是GlassFish信息页面?
BigDecimal bd= new BigDecimal("00.0000000000");
//now bd format to 0E-10
if(BigDecimal.ZERO.equals(bd) || bd.equals("0E-10"))
{
flag=true;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有两个问题
谁能建议.谢谢
我有一个 h2 数据库,其架构是通过 JPA/hibernate 自动生成的。现在我想timestamp将数据库上的非空类型列更改为默认为当前时间。
我实际上使用了 trigger,并且有效,但是我想知道是否有更优雅的方法来实现这一点,例如(以下代码段不起作用)
ALTER TABLE my_table ALTER COLUMN my_column SET DEFAULT CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
我查看了文档并尝试了上述“伪声明”的一些变体,但现在成功了。
我尝试将应用程序包装到“存储库”组件中,并且该外部组件应该处理与后端的所有通信,例如加载、更新、删除可编辑数据。我以为我可以将事件发送到该Repository组件,但我没有按照我的方式工作。有谁发现这个问题或可以解释为什么这不起作用以及如何正确处理事件?我可以使用可写对象,但事件会使它更具可读性。这是一个简化的示例和一个简洁的 REPL 链接:
https://svelte.dev/repl/e1eae56c7d5e48b2a99299f1bc1bf970?version=3.22.3
应用程序.svelte:
<script>
import Repository from './Repository.svelte'
import Application from './Application.svelte'
</script>
<Repository>
<Application on:save={() => console.log('caught in App')} />
</Repository>
Run Code Online (Sandbox Code Playgroud)
存储库.svelte:
<div on:save={() => console.log('caught in Repository')}>
<slot></slot>
</div>
Run Code Online (Sandbox Code Playgroud)
应用程序.svelte:
<script>
import {createEventDispatcher} from 'svelte'
const dispatch = createEventDispatcher();
function saveHandler() {
console.log('dispatching')
dispatch('save')
}
</script>
<button on:click={saveHandler}>
Save
</button>
Run Code Online (Sandbox Code Playgroud)
期望的输出是
dispatching
caught in Repository
Run Code Online (Sandbox Code Playgroud)
但它只打印
dispatching
caught in App
Run Code Online (Sandbox Code Playgroud)
单击按钮时。
java ×8
swing ×2
bigdecimal ×1
blocked ×1
collections ×1
glassfish ×1
h2 ×1
listeners ×1
performance ×1
redirect ×1
spring ×1
spring-aop ×1
sql ×1
structure ×1
svelte ×1
swt ×1