如上所述,我想更改a中的默认TAB行为JTextArea
(以便它像一个JTextField
或类似的组件)
这是事件动作
private void diagInputKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.KEY_PRESSED == java.awt.event.KeyEvent.VK_TAB) {
actionInput.transferFocus();
}
}
Run Code Online (Sandbox Code Playgroud)
这是听众
diagInput.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
diagInputKeyPressed(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
我也尝试过evt.KEY_TYPED,没有任何快乐.
有任何想法吗?
快速编辑:我也试过requestFocus()
代替transferFocus()
我将jQuery AJAX POST发布到servlet,数据采用JSON String的形式.它成功发布但在Servlet端我需要将这些key-val对读入Session对象并存储它们.我尝试使用JSONObject类,但我无法得到它.
下面是代码片段
$(function(){
$.ajax(
{
data: mydata, //mydata={"name":"abc","age":"21"}
method:POST,
url: ../MyServlet,
success: function(response){alert(response);
}
});
Run Code Online (Sandbox Code Playgroud)
在Servlet方面
public doPost(HTTPServletRequest req, HTTPServletResponse res)
{
HTTPSession session = new Session(false);
JSONObject jObj = new JSONObject();
JSONObject newObj = jObj.getJSONObject(request.getParameter("mydata"));
Enumeration eNames = newObj.keys(); //gets all the keys
while(eNames.hasNextElement())
{
// Here I need to retrieve the values of the JSON string
// and add it to the session
}
}
Run Code Online (Sandbox Code Playgroud) 我试图抓住屏幕上显示组件的第一时刻,而不使用"脏"解决方案,就像使用计时器一样.基本上,我想知道我可以安全地开始getLocationOnScreen()
在组件上使用方法的那一刻.
我认为组件监听器可以帮助但在这里没有运气.我现在卡住了,不知道哪个听众可以使用.有什么建议?
下面是一些示例代码,显示组件侦听器失败.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CompListenerTest
{
static ComponentListener cL = new ComponentAdapter()
{
@Override
public void componentShown(ComponentEvent e)
{
super.componentShown(e);
System.out.println("componentShown");
}
};
static MouseListener mL = new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
super.mousePressed(e);
JComponent c = (JComponent) e.getSource();
System.out.println("mousePressed c="+c.isShowing());
}
};
public static void main(String[] args)
{
JPanel p = …
Run Code Online (Sandbox Code Playgroud) 在对问题中提出的问题感兴趣之后, 我试图接近它几次并且失败了,我不喜欢那样:)
我认为如果问题被分成子问题,它可能有助于解决它.
为简单起见,假设JTextArea不会改变其大小,因此我们不需要担心重新评估等.我认为重要的问题是:
1.如何计算某个文本在JTextArea中占用的行数?
2. JTextArea中的列数与它可以放在一行中的字符数之间的关系是什么?所以我们可以计算行长度.
请在下面找到包含要处理的文本区域的示例代码:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class TextAreaLines
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JPanel p = new JPanel();
JFrame f = new JFrame();
JTextArea ta = new JTextArea("dadsad sasdasdasdasdasd");
ta.setWrapStyleWord(true);
ta.setLineWrap(true);
ta.setRows(5);
ta.setColumns(5);
p.add(ta);
f.setContentPane(p);
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
//BTW the code below prints 1
System.out.println("ta.getLineCount()="+ta.getLineCount());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:所以我提出了以下代码,但问题是输出不是你看到的,即
//for input
//JTextArea ta = …
Run Code Online (Sandbox Code Playgroud) jqPlot
当鼠标悬停时改变填充的颜色......我想删除那个效果..怎么样?
以下是使用的选项:
var options={
series: [{
neighborThreshold: -1,
shadowAngle:0,
shadowOffset:2.5,
shadowAlpha:.05,
shadowDepth:5
}],
seriesDefaults: {
color: '#224',
fill: true, // fill under the line,
fillAndStroke: true, // *stroke a line at top of fill area.
fillColor: '#66CCCC', // *custom fill color for filled lines (default is line color).
fillAlpha: 0.2, // *custom alpha to apply to fillColor.
markerRenderer: $.jqplot.MarkerRenderer, // renderer to use to draw the data
// point markers.
markerOptions: {
show: false, // wether to show data …
Run Code Online (Sandbox Code Playgroud) 对于我的应用程序,我需要动态创建网站的缩略图.到目前为止,我有来自SO的代码:
public class CreateWebsiteThumbnail {
private static final int WIDTH = 128;
private static final int HEIGHT = 128;
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
public void capture(Component component) {
component.setSize(image.getWidth(), image.getHeight());
Graphics2D g = image.createGraphics();
try {
component.paint(g);
} finally {
g.dispose();
}
}
private BufferedImage getScaledImage(int width, int height) {
BufferedImage buffer = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffer.createGraphics();
try {
g.drawImage(image, 0, 0, width, height, null);
} finally {
g.dispose();
}
return buffer; …
Run Code Online (Sandbox Code Playgroud) 我正在运行jqPlot
,由于某种原因,应该显示在饼图渲染器图例中的颜色编码方块没有出现.我想知道它是否与我正在使用twitter bootstrap的事实有关?我没有使用任何其他css库.
var plot1 = jQuery.jqplot('chartdiv', [graphData],
{
grid: {
shadow: false,
background: '#FFFFFF',
},
seriesDefaults: {
// Make this a pie chart.
renderer: jQuery.jqplot.PieRenderer,
rendererOptions: {
// Put data labels on the pie slices.
// By default, labels show the percentage of the slice.
showDataLabels: true,
padding: 20,
startAngle: 270
}
},
legend: {
show: true,
location: 'e',
fontSize: 11,
marginTop: 10,
}
});
Run Code Online (Sandbox Code Playgroud) 我在图表中有一系列折线图jqPlot
.我想要做的是关闭所有图形的突出显示,除了一个我想要突出显示的图形.我怎样才能做到这一点?
我正在尝试运行一个旧的Clipper应用程序.它在Win 7 32bit上运行良好,但是当我尝试使用DOSBox 0.74时崩溃时出现以下错误:
Exit to error: CPU_SetSegGeneral: Stack segment zero
运行DOSBox时是否有一些我忘记设置的设置?
我需要能够在DOSBox中运行这个应用程序,因为它似乎只是可以在任何Win 7上运行的便携式解决方案,无论是32位还是64位.
如果对此问题没有明显的解决方案,也许您可以告诉我在Win 7 64位家庭版上运行Clipper 5.3应用程序有哪些替代方案?
编辑: 我尝试在Win 7 Home 64位上使用相同的结果.我能做什么?
我在NetBeans Profiler中观察到,在执行查询后,Surviving Generations继续增加:
@Select("SELECT * FROM ais_dynamic WHERE rep_time >= #{from} AND rep_time <= #{to} AND ais_system = #{sys}")
@Options(useCache=false,fetchSize=8192)
List<AisDynamic> getRecords(
@Param("from") Timestamp from,
@Param("to") Timestamp to,
@Param("sys") int sys);
Run Code Online (Sandbox Code Playgroud)
就好像列表中的对象永远不会被释放,尽管它们没有被其他地方使用,并且应该在后台线程运行查询并处理其结果时死亡.
以下是NetBeans Profiler返回的实时结果:
我的问题:
Options
虽然这没有阻止内存泄漏?如果需要什么,请告诉我们将提供什么.
更新:
经过更多的测试后,我更担心问题在于MyBatis持有对检索结果的引用,因此它们不会随着时间的推移而被垃圾收集.在完成20次查询调用之后,等待我即使在30分钟后也没有观察到垃圾回收.我所做的只是调用方法:List<AisDynamic> adList = mapper.getRecords(from, to, sys);