我正在使用iTextPdf构建一个pdf表.每个页面上都有9到15列,确切的数字直到运行时才知道.iTextPDF非常适合在页面宽度上创建大小相同的列.但我无法弄清楚如何创建不同宽度的列.
我不能使用固定的列宽,因为我想跨越整个页面宽度.因此,当写入9列时,每列必须比写入12或15列时更宽.固定的是这些列宽度之间的关系.举个例子,我知道A列总是75%的列宽,它总是列C宽度的50%.我可以为每一列确定这个.
任何人对如何划分页面以正确调整这些列的大小有任何想法?这是我正在使用的一些代码,它们创建了相同大小的列.我最近还需要一些其他东西
cell.setColspan(1);
更改列的宽度,但不更改为固定值.谢谢!
public static void newPDF() throws DocumentException, IOException {
PdfWriter writer;
Document document;
int cols = 9; //can be either 9, 12, or 15
document = new Document();
writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));
document.open();
document.add(createTable(cols));
document.close();
}
public static PdfPTable createTable(int cols) {
PdfPTable table = new PdfPTable(cols);
PdfPCell cell;
for (int i = 0; i < cols; i++) {
ph = selector.process("some text");
cell = new PdfPCell(ph);
cell.setColspan(1); //repeated 9, 12, or 15 times
table.addCell(cell); …Run Code Online (Sandbox Code Playgroud) 我只是想将JLabel添加到现有的JPanel中.这看起来很简单,我四处搜索.我认为这是对的,但标签没有出现在我的面板上.有谁看到我错过了什么?谢谢!
ResultsPanel myPanel = new ResultsPanel(pnlResults); //pnlResults is an existing JPanel
myPanel.addLabel(pnlResults);
public class ResultsPanel extends JPanel {
JPanel myPanel;
public ResultsPanel(JPanel thisPanel) {
myPanel = thisPanel;
}
public void addLabel(JPanel myResults) {
JLabel myLabel = new JLabel("test", JLabel.LEFT);
myPanel.setLayout(new FlowLayout());
add(myLabel);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:回应下面的即时回复,我同意这似乎是完全矫枉过正.我沿着这条路走下去,因为下面的代码也没有导致JLabel被添加到我的JPanel中:
JLabel myLabel = new JLabel("test");
pnlResults.add(myLabel);
Run Code Online (Sandbox Code Playgroud)
我宁愿使用这个代码,所以如果你认为它更有可能工作(当然有一些修改),请随意评论.再次感谢!
尝试通过SQLite查询获取列中的最大值.从我正在阅读的所有内容中,我的代码应该可行.但事实并非如此.这是代码:
SQLiteDatabase db = myDBOpenHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT MAX(GAME_COLUMN) FROM GAMES_TABLE", null);
Run Code Online (Sandbox Code Playgroud)
此时表格是空的,而不是我认为它应该重要.这是错误:
sqlite返回:错误代码= 1,msg =接近"null":语法错误
我必须写错了,但我没有看到错误.表和列名称是corectly输入的.有人能发现这个吗?
如果我忽略了一些愚蠢的东西,请提前道歉.对SQLite来说很新鲜.
谢谢!
我有一个我为孩子们编写的程序来练习基本的算术.JFrame上有一个JTextField,其中学生键入给定数学问题的答案(如8 + 8,他们键入16,回车).此字段仅通过DocumentFilter接受整数值作为条目.
那部分工作正常.我想要做的是避免用户必须按Enter键.理想情况下,当用户键入第一个数字(1)时,检查是否1 == 16.如果不是,则没有任何反应.当他们随后键入6时,文本字段显示数字16.我想运行检查以验证16 == 16,然后处理该条目,就像用户也按Enter键一样.
txtAnswer.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
respondToAnswer(isTimed);
} else {
/* Check if the correct answer has been entered */
System.out.println(txtAnswer.getText());
//int userAnswer = Integer.parseInt(txtAnswer.getText());
//if (userAnswer == correctAnswer {
// respondToAnswer(isTimed);
//}
}
};
});
Run Code Online (Sandbox Code Playgroud)
这段代码不太合适.好像它背后是一个角色.我的意思是当用户点击'1'键时(在我的8 + 8 = 16示例中),控制台输出是一个空字符串.当他们点击'6'键时,输出为'1'.如果他们然后按下另一个整数键,则输出为"16".它总是落后一位数.因此,我无法捕获文本字段的全部内容以查看它是否与正确答案匹配.
有人看到我错过了吗?
谢谢!
我正在尝试使用cygwin和g ++编译一个相对简单的c ++程序.我可以使用以下命令编译它:
g++ -o main main.cpp -lgmpxx -lgmp
(注意:最后两个反映了gmp库的包含).
我想提高编译的优化级别.我以为我可以将此命令行更改为:
g++ -o3 main main.cpp -lgmpxx -lgmp
但这完全爆发了.我得到两个完整的错误消息屏幕.
如何在此处增加优化?谢谢!
我正在尝试更新我在工作表上的所有标签的背景颜色.我想用RGB值来表示颜色,但是我被困在两个地方.这是我现在的代码:
Sheet2.Shapes("Label 2").Fill.BackColor.RGB = RGB(220, 105, 0)
Run Code Online (Sandbox Code Playgroud)
此代码将运行没有错误,但似乎没有任何效果.我的标签开始是白色(或可能透明),永远不会改变.任何人都可以告诉我我需要做些什么来使这项工作?我也添加了这个,但它没有做任何事:
shp.Fill.Solid
Run Code Online (Sandbox Code Playgroud)
接下来,我想在变量中捕获此RGB值,以便我不必重复重新键入.基本上,我正在寻找这样的东西:
dim col as Color
col = RGB(220,105,0)
Sheet2.Shapes("Label 2").Fill.BackColor.RGB = col
Run Code Online (Sandbox Code Playgroud)
我知道没有名为Color的变量类型,但我认为你可以看到我想要做的事情.
好的,这很奇怪.以下代码旨在为我开始介绍AJAX,我在文本输入中输入一些文本,单击一个提交按钮,然后将AJAX/PHP作为div中的文本回显.当我一次一行地执行这个代码时,我可以看到我的文本出现在我应该的行的div中.但是,当我跨过最后一个花括号时,文字消失了!怎么会这样??我不明白.有人可以帮忙吗?谢谢!
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
<!--
window.onload = function ajaxFunction() {
document.myform.onsubmit = getFeedback;
}
function getFeedback() {
var textvalue = document.getElementById("textfield").value;
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("feedback").innerHTML=textvalue;
}
}
xmlhttp.open("GET","scripts/handle_feedback.php?mytext="+textvalue,true);
//at this point in the execution, my text is displayed …Run Code Online (Sandbox Code Playgroud) 首先尝试使用JSON.我有一个返回JSON对象的ajax/php函数.回到js方面,我可以看到对象并将其输出到div.看起来很好.我可以把它打印到控制台,看起来还不错.但是当我尝试迭代它并公开各个值时,我只是在我的控制台中得到"未定义".我无法弄清楚我错过了什么.对不起它,如果是明显的东西,但我没有看到它.谢谢!
var jsonObj = JSON.parse(xmlhttp.responseText);
console.log(jsonObj); //<--looks perfect
console.log(jsonObj.length);
document.getElementById("rightsidebox").innerHTML=response; //<--looks good
for (var group in jsonObj) {
//each of these generates 'undefined' WHY???
//I get 4 'undefined' outputs for each group, so I know that my loop is iterating correctly
console.log(group.id);
console.log(group.day);
console.log(group.time);
console.log(group.name);
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的ajax调用返回的一个JSON对象的示例.在这个例子中,我在数组中只有一个对象.当然,通常会有多个对象:
[{"id":"7","day":"Thursday","time":"7:00 am","name":"Sub 10:00"}]
编辑2:鉴于这个数组,我不得不问JSON的意义是什么.我可以返回这个数组而不用PHP以JSON格式编码它.所以,如果所有回来的只是一个javascript数组,那么我完成了什么?为什么不跳过PHP中的JSON编码然后迭代数组呢?显然这是有原因的,所以我显然错过了一些东西.有没有更好的方法来做我想要完成的事情?谢谢!
我是MySQL的新手,无法弄清楚这里出了什么问题。我有两张桌子。左表称为“锻炼”。相关列是date(类型日期)和id(类型int)。
右边的表格称为Workout_locations(相关字段:)workout_id type int, and location_id type int。
连接字段是Workouts.id和Workout_locations.workout_id。
我要做的就是得到一个两列的表:(date来自“锻炼”)和location_id(来自Workout_locations)。我只需要Workouts基于几个字段就可以从表中提取记录(sql语句应清楚表明这一点)。
这是我的SQL语法:
SELECT Workouts.date as date, Workout_locations.location_id as loc_id
FROM Workouts
WHERE Workouts.pacegroup_id='9' AND (Workouts.date BETWEEN '2013-08-19' AND '2013-08-25')
INNER JOIN Workout_locations ON Workouts.id=Workout_locations.workout_id"
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
您的SQL语法有误;在第1行的“ INNER JOIN Workout_locations ON Workouts.id = Workout_locations.workout_id”附近,查看与您的MySQL服务器版本相对应的手册以使用正确的语法。
我希望对于有经验的人来说,这是一个非常容易发现的错误。有人看到吗?谢谢!
我有一个 PHP 脚本,我一直在使用它来解密我从 iOS 加密的会话密钥。加密是在客户端使用 1024 位公钥完成的。服务器端的解密是用相应的私钥完成的。现在我正在尝试为Android编写一个加密方法。不幸的是,解密仍然失败,我看不出出了什么问题。
这是Android代码:
public String encryptSessionKeyWithPublicKey(String pemString, byte[] sessionKey) {
try {
PublicKey publicKey = getPublicKeyFromPemFormat(pemString);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherData = cipher.doFinal(sessionKey);
return Base64.encodeToString(cipherData, Base64.DEFAULT);
} catch (IOException ioException) {
Log.e(TAG, "ioException");
} catch (NoSuchAlgorithmException exNoSuchAlg) {
Log.e(TAG, "NoSuchAlgorithmException");
} catch (InvalidKeySpecException exInvalidKeySpec) {
Log.e(TAG, "InvalidKeySpecException");
} catch (NoSuchPaddingException exNoSuchPadding) {
Log.e(TAG, "NoSuchPaddingException");
} catch (InvalidKeyException exInvalidKey) {
Log.e(TAG, "InvalidKeyException");
} catch (IllegalBlockSizeException exIllBlockSize) {
Log.e(TAG, "IllegalBlockSizeException");
} catch (BadPaddingException exBadPadding) …Run Code Online (Sandbox Code Playgroud)