小编Joe*_*oey的帖子

旋转Swing JLabel

我目前正在尝试实现一个Swing组件,继承JLabel该组件应该只是代表一个可以垂直定向的标签.

从这开始:

public class RotatedLabel extends JLabel {

    public enum Direction {
        HORIZONTAL,
        VERTICAL_UP,
        VERTICAL_DOWN
    }

private Direction direction;
Run Code Online (Sandbox Code Playgroud)

我认为改变以下结果是个好主意getPreferredSize():

@Override
public Dimension getPreferredSize() {
    // swap size for vertical alignments
    switch (getDirection()) {
        case VERTICAL_UP:
        case VERTICAL_DOWN:
            return new Dimension(super.getPreferredSize().height, super
                .getPreferredSize().width);
        default:
            return super.getPreferredSize();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后Graphics在我卸载绘画之前简单地转换对象JLabel:

@Override
protected void paintComponent(Graphics g) {
    Graphics2D gr = (Graphics2D) g.create();

    switch (getDirection()) {
        case VERTICAL_UP:
            gr.translate(0, getPreferredSize().getHeight());
            gr.transform(AffineTransform.getQuadrantRotateInstance(-1));
            break;
        case VERTICAL_DOWN:
            // …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel

7
推荐指数
1
解决办法
2万
查看次数

Powershell和SQL参数.如果为空字符串,则传递DBNull

我有这个参数:

$objDbCmd.Parameters.Add("@telephone", [System.Data.SqlDbType]::VarChar, 18) | Out-Null;
$objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;
Run Code Online (Sandbox Code Playgroud)

字符串$objUser.Telephone可以为空.如果它是空的,我怎么能把它转换成[DBNull]::Value

我试过了:

if ([string]:IsNullOrEmpty($objUser.Telephone)) { $objUser.Telephone = [DBNull]::Value };
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

使用"0"参数调用"ExecuteNonQuery"的异常:"无法将参数值从ResultPropertyValueCollection转换为String."

如果我将它转换为字符串,它会插入一个空字符串"",而不是DBNull.

如何实现这一目标?

谢谢.

sql powershell dbnull

7
推荐指数
2
解决办法
2万
查看次数

有效改变100GB表的方法

我们有许多数据库,在其中一个表中存储10到100千兆字节的数据.它包含图像数据.问题是很多这些数据库都是不正确地创建的.基本上,主键实际上不是主键.在可空列上使用唯一索引创建.其中一些有一个int作为主键而不是bigint.

所以我们一直在慢慢地修复这些数据库.它们通过SQL Server 2008在SQL Server 2000上运行,尽管大多数具有主键问题的都在SQL Server 2000上.问题是,我们不希望在转换表时将数据库锁定一整天.我们经历了几个策略:

  1. 告诉SQL Server直接更改列类型.这会锁定桌子直到它完成,并且在很多情况下将它放置一夜之后,它仍然没有完成.

  2. 一次性将所有图像插入新表中.这更容易被中断,但整个表基本上都被写入了进程中的日志文件.

  3. 在目标表中不存在行的时间插入100行.好处是,他们可以继续使用数据库进行此操作(性能大幅提升),并且可以在任何时候任意停止和重新启动,并且它可以防止100GB +日志文件.这就是我们目前正在做的事情,但是随着目标表变得越来越大,找到不存在的前100行变得非常慢.UPDATE STATISTICS和DBCC INDEXDEFRAG有很大的帮助,但在最近的尝试中,我们达到了这一点,一次只有100张图像坐在那里没有响应.

    INSERT INTO %s  
      SELECT TOP 100 Source.*  
      FROM %s AS Source WITH (NOLOCK)  
      LEFT OUTER JOIN %s AS Target WITH (NOLOCK) ON Source.DocumentID = Target.DocumentID  
      WHERE Target.DocumentID IS NULL  
      ORDER BY Source.DocumentID  
    
    Run Code Online (Sandbox Code Playgroud)

所以问题是,是否有可以以高效和可恢复的方式复制批量数据的选项?它不必100%准确,我们总是可以返回并修复最后的任何差异,只要它完成99%的工作.

bulkinsert sql-server-2000

7
推荐指数
1
解决办法
764
查看次数

批处理:从文件路径中包含空格的文件中读取行

要从文件中读取行,请在批处理文件中执行以下操作:

for /f %%a in (myfile.txt) do (
    :: do stuff...
)
Run Code Online (Sandbox Code Playgroud)

现在假设你的档案在 C:\Program Files\myfolder

for /f %%a in ("C:\Program Files\myfolder\myfile.txt") do (
    echo %%a
)
Run Code Online (Sandbox Code Playgroud)

结果:

C:\Program Files\myfolder\myfile.txt
Run Code Online (Sandbox Code Playgroud)

这似乎将给定路径解释为字符串,因此%%a是您给定的路径.

到目前为止我发现的文档中没有任何相关内容.在我开枪之前,请有人帮助我.

command-line batch-file

7
推荐指数
1
解决办法
1万
查看次数

使用Windows批处理中的set设置空变量的问题

set var=%1
echo var
set command=""
IF var==true ( 
    set command=dir
)

IF var==false ( 
    set command=dir /a
)
echo %command%
%command%
Run Code Online (Sandbox Code Playgroud)

所以,如果我通过键入来运行此脚本

C:\>test true
Run Code Online (Sandbox Code Playgroud)

echo %command%始终打印"".任何的想法?

batch-file

7
推荐指数
2
解决办法
3万
查看次数

为什么显示上标数字的Unicode字符不在同一高度?

为什么显示Unicodes的数字上标不是同一个高度?如果您使用上标数字中的两位数字,这一点特别明显.其中一些看起来很好,但其余的看起来相对于彼此.我错过了什么吗?或者这是怎么回事?

unicode superscript ios

7
推荐指数
2
解决办法
1564
查看次数

在.xml文件中除以零错误

在我的android应用程序中,我在\ res\layout\admin.xml中创建了xml文件

我在其中使用的布局是:

<ScrollView >
<LinearLayout >
<TableLayout>
.
.
Components
.
.
</TableLayout>
  <TableLayout>
.
.
Components
.
.
</TableLayout>
</LinearLayout>
</ScrollView> 
Run Code Online (Sandbox Code Playgroud)

错误

!ENTRY com.android.ide.eclipse.adt 4 0 2011-11-17 13:35:10.046
!MESSAGE admin_view_pin.xml: / by zero
!STACK 0
java.lang.ArithmeticException: / by zero
    at android.widget.TableLayout.mutateColumnsWidth(TableLayout.java:579)
    at android.widget.TableLayout.shrinkAndStretchColumns(TableLayout.java:568)
    at android.widget.TableLayout.measureVertical(TableLayout.java:466)
    at android.widget.TableLayout.onMeasure(TableLayout.java:431)
    at android.view.View.measure(View.java:10577)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4270)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1284)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:613)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:519)
    at android.view.View.measure(View.java:10577)
    at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1090)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
    at android.widget.ScrollView.onMeasure(ScrollView.java:314)
    at android.view.View.measure(View.java:10577)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4270)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
    at android.view.View.measure(View.java:10577)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4270)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1284)
    at …
Run Code Online (Sandbox Code Playgroud)

android android-layout

7
推荐指数
1
解决办法
3229
查看次数

在Roslyn中解析表达式的名称

我试图用a中的nameof表达式做一些事情CSharpSyntaxWalker,但是,我注意到NameOfExpressionSyntaxAST中没有.相反,我得到一个没有匹配符号的InvocationExpressionSyntaxfor SemanticModel.GetSymbolInfo,并且调用的表达式IdentifierNameSyntax包含一个标识符标记"nameof".

因此,要识别nameof表达式,我会添加一个特殊情况VisitInvocationExpression,查找是否GetSymbolInfo返回任何内容,如果没有,则查找标识符是否为nameof.然而,这对我来说听起来有点不合时宜.有没有更好的方法可能将那种检测逻辑转移到解析器?

(PS:我知道这可能是出于向后兼容性原因而解析的;只是想知道是否有用于区分nameof和正常调用的API .)

c# roslyn nameof

7
推荐指数
2
解决办法
354
查看次数

LINQ查询可能无限的列表

我目前在做一些项目欧拉的问题,并与先前的往往涉及之类的斐波那契数或素数.遍历他们似乎是天作之合LINQ,至少在可读性和感知代码的"优雅"(我试图使用特定语言的功能如果可能的话,适用于获取语言的感觉).

我现在的问题是,如果我只需要一组数字达到一定限度,我该如何表达最佳?目前我已经对迭代器中的相应限制进行了硬编码,但是我真的希望枚举器返回列表,直到外面的东西决定不再查询它,因为它超过了某个限制.所以基本上我有一个可能无限的迭代器,但我只从中获取一组有限的数字.我知道这些东西在函数式语言中是微不足道的,但我想知道C#是否允许这样做.我唯一的另一个想法是拥有一个迭代器Primes(long),它返回一个特定限制的素数,同样适用于其他序列.

有任何想法吗?

c# linq ienumerable

6
推荐指数
1
解决办法
505
查看次数

Mousedown事件两次射击(WPF)

我目前正在尝试从简单网格上的图像捕获mousedown.我对事件发射没有任何问题,只是它发射了两次.而且因为点击它两次最终会有不同的状态(它会显示一个扩展的图像),直接进行第二次点击会导致问题.

我目前的代码如下:

XAML

<Window x:Class="WpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Background="Transparent" x:Name="MainContent" MouseDown="Generic_MouseDown">
        <Image Source="http://www.blogcdn.com/www.engadget.com/media/2011/05/welcome-kansas-city-google-high-speed-internet.jpg" Height="100" Width="100" MouseDown="Generic_MouseDown"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Generic_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (((FrameworkElement)e.Source).GetType() == typeof(System.Windows.Controls.Image))
        {
            Console.Out.WriteLine("image clicked");
        }
        else
        {
            Console.Out.WriteLine("grid clicked");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我点击图像时,它会两次发射mousedown.

谢谢!

c# wpf onmousedown

6
推荐指数
2
解决办法
7412
查看次数