是否有一些规则,或好/坏经验AncestorListener,ComponentListener或HierarchyListener听取变化的可见性JPanel和JComponents?
其中一个比其他人更好还是更安全?我特别想知道何时以及如何JPanel/ JComponent隐藏.
请注意以下代码包含不正确的Swing规则,例如Thread.sleep(int)在这种情况下使用,允许我Listeners在Swing GUI中打印出正确的顺序
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
public class CardlayoutTest extends JFrame {
private static final long serialVersionUID = 1L;
public CardLayout card = new CardLayout();
public CardlayoutTest() {
JPanel pnlA = new JPanel(new BorderLayout());
pnlA.add(new JButton("A"), BorderLayout.CENTER);
JPanel pnlB = new JPanel(new …Run Code Online (Sandbox Code Playgroud) 为了SwingTimer准确,我喜欢@Tony Docherty On CR提出的逻辑和例子.这是链接.
为了突出显示给定的单词,一次又一次,总会有几微秒的延迟.如果我要突出显示单词:"你好怎么样",每个单词的值分别为(延迟):200,300,400 ms,那么计时器的实际时间总是更多.说而不是200毫秒,它需要216毫秒.像这样,如果我有很多话......最后,额外的延迟是显而易见的.
我必须强调每个字母说:'h''''''''''0'每个应该得到200 /长度(即5)=约40毫秒.设置每个字母后的延迟.
我的逻辑是,在当前时间说startTime,就在开始这个过程之前.另外,计算totalDelaytotalDelay + = delay/.length().
现在检查条件:( startTime+totalDelay-System.currentTime)如果这是-ve,这意味着时间消耗更多,所以跳过这封信.检查直到有一个正的延迟.这意味着我要添加时间到现在,并用它开始时的过程所花费的时间差来检查它.
这可能导致跳过以突出显示字母.
但有些事情是错的.什么,我很难说出来.这可能是循环事情的一些问题.我已经看到它进入循环(检查时间是否为-ve)只是两次.但事实并非如此.而且我也不确定是否会设置下一次延迟.有任何想法吗?
这是一个SSCCE:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class Reminder {
private static final String TEXT = "arey chod chaad ke apnee saleem ki gali anarkali disco chalo";
private static final String[] WORDS = TEXT.split(" …Run Code Online (Sandbox Code Playgroud) 我想在我的项目中添加sonarlint插件.当我使用maven构建时,插件应该在没有我干预的情况下自动启用.有没有办法可以做到?
为什么与模板类无关的集合会丢弃其类型?这是一个例子:(抱歉,由于我对此感到困惑而无法编译.)
package test;
import java.util.ArrayList;
import java.util.List;
public class TemplateTest {
public static class A { }
public static class B<T extends Comparable> {
List<A> aList = new ArrayList<A>();
public List<A> getAList() {
return aList;
}
public int compare(T t, T t1) {
return t.compareTo(t1);
}
}
public static void main(String[] args) {
B b = new B();
for (A a : b.getAList()) { //THIS DOES NOT WORK
}
List<A> aList = b.getAList(); //THIS WORKS
for (A a : aList) …Run Code Online (Sandbox Code Playgroud) 我试图在swing应用程序中应用MVC模式.但是我面临两个主要问题,因为你有嵌套的面板层次结构,例如父 - >孩子 - >大孩子 - >大孩子.
问题1:当您有这样的层次结构时,如何在控制器和视图之间传输数据?如果我将数据从父母传递给孩子,那么就会有很多重复,如果我改变一个孩子,所有父母都需要改变.我不希望视图直接从数据库访问数据,我希望数据只通过控制器传输到视图.
问题2:如何在这种层次结构中将事件从视图传播到控制器?我正在考虑使用PropertyChangeListener.如果控制器必须采取任何操作,则将查看firePropertyChange事件.控制器将监听这些事件并执行某些操作.但是,如果我为层次结构执行此操作,那么将会出现代码重复.
我有三个可能有用的想法:
请参考下图了解第3个想法的图片.如果是第二个,调解员将进入中心.
如果有人以更好的方式实施此类问题,请评估并告知我们.

使用Netty时,我很惊讶如果我使用reuseAddress选项,它允许ServerSocket绑定到同一地址而不会引发"已绑定异常"
ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(Executors
.newCachedThreadPool(), Executors.newCachedThreadPool()));
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline p = pipeline();
p.addLast("handler", new DummyHandler());
return p;
}
});
bootstrap.setOption("reuseAddress", true);
bootstrap.bind(new InetSocketAddress(2000));
bootstrap.bind(new InetSocketAddress(2000));
Run Code Online (Sandbox Code Playgroud)
我只是认为reuseAddress允许新的套接字重用一个close-wait套接字,但这是不同的.以下是netstat命令的结果
C:\Users\secmask>netstat -a -n|grep 2000
TCP 0.0.0.0:2000 0.0.0.0:0 LISTENING
TCP 0.0.0.0:2000 0.0.0.0:0 LISTENING
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?这是怎么回事?
我写了一个自定义的 gradle 插件,它带有一个额外的编译步骤。为了编译,需要插件本身的一些类,因为它是一个注释处理器。
我尝试通过以下方式添加插件作为编译依赖项来解决它:
// in the custom plugin
project.dependencies {
compile "com.thilko.spring:gradle-springdoc-plugin:0.1.SNAPSHOT"
compile localGroovy()
}
Run Code Online (Sandbox Code Playgroud)
该解决方案有效,但引入了重复,因为我必须声明已在使用该插件的项目的构建脚本部分中声明的相同插件版本:
// build.gradle of the project that uses the plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.thilko.spring:gradle-springdoc-plugin:0.1"
}
}
apply plugin: 'springdoc'
Run Code Online (Sandbox Code Playgroud)
有没有办法重用构建脚本部分中定义的依赖项?
我正在尝试在 netbeans 中创建一个新项目。但是当我在项目中添加文件夹时,它总是抛出错误:“项目 netbeans 中已经使用了包文件夹”。
我删除了所有文件夹 c:/users/../.netbeans/6.9/var/.
我仍然遇到同样的问题。该错误提到一个文件夹已经打包为某个旧包名称,但该旧包名称在我的系统文件夹中不可用。谁能帮帮我吗?
我使用swing在java中编写了一个代码,这样我就可以在JPanel中添加一个JscrollPane,然后我将以垂直方式添加固定大小的按钮到JPanel
JPanel panel=new JPanel();
panel.setBackground(Color.WHITE);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS;
JScrollPane jsp=new JScrollPane(panel,v,h);
jsp.setPreferredSize(new Dimension(600,600));
jsp.setBounds(150,670,850,200);
frame.add(jsp);
Run Code Online (Sandbox Code Playgroud)
然后我在运行时添加按钮.
for(i=0;i<n;i++)
{
button[i]=new JButton();
button[i].setBounds(20,y,120,120);
button[i].setSize(120,120);
button[i].setToolTipText(file[i].toString());
button[i].setIcon(Icon);
panel.add(button[i]);
y=y+140;
}
Run Code Online (Sandbox Code Playgroud)
我想在另一个下面添加一个按钮...(即我想要一个垂直滚动条)
即button1
button2
'
'
Run Code Online (Sandbox Code Playgroud)
但上面的代码给我一行中的按钮(即我得到水平滚动条)即button1 button2 ...
另一个问题是按钮的大小.使用btn.setSize()根本不影响大小......
有谁能够帮我?
当我从Web应用程序使用RSA 7.5 IDE和Web Sphere 7.0服务器创建新的Web服务时,我可以看到由此过程创建的一些自动生成的文件,即:
1)对于服务,创建SEI文件
2)对于模型,创建ser,deser和helper文件.
但是我无法理解所有这些SEI,ser,deser和helper文件的用途.
任何有效的解释将非常感激.
BOUNTY编辑:
赏金编辑:
由于我没有得到任何回复,我想再次提出这个问题 - 提供奖励以鼓励深入回答.我很想知道这些文件是如何以及何时在内部使用的?
问候,